Reading additional input from stdin...
OpenAI Codex v0.124.0 (research preview)
--------
workdir: /opt/MM_D-ND
model: gpt-5.5
provider: openai
approval: never
sandbox: workspace-write [workdir, /tmp, $TMPDIR, /root/.codex-lab/memories]
reasoning effort: none
reasoning summaries: none
session id: 019e2cfe-3d57-7561-af07-ff308fe12dd6
--------
user
Sei l'AI-Lab D-ND. Leggi tools/data/agent_field_live.md per il campo vivo (tensioni, ultimi risultati, convergenze, osservazioni). Leggi tools/LAB_AGENT_CONTEXT.md per modello, regole, errori da evitare. Esegui un esperimento e scrivi il report in tools/data/reports/agent_20260515_1855.md
warning: Codex could not find bubblewrap on PATH. Install bubblewrap with your OS package manager. See the sandbox prerequisites: https://developers.openai.com/codex/concepts/sandboxing#prerequisites. Codex will use the vendored bubblewrap in the meantime.
codex
Leggo prima il campo vivo e il contesto operativo, poi scelgo un solo esperimento coerente con la tensione attiva o con l'eventuale direttiva one-shot. Verifico anche le regole locali essenziali prima di scrivere il report.
exec
/bin/bash -lc 'ls -t shared_memory/*.md 2>/dev/null | head -10' in /opt/MM_D-ND
exec
/bin/bash -lc "sed -n '1,260p' tools/data/agent_field_live.md" in /opt/MM_D-ND
 succeeded in 0ms:
shared_memory/deposito_cambia_la_parola_non_regola_2026-05-07.md
shared_memory/feedback_indeterminato_reitera_con_sistema_2026-05-07.md
shared_memory/README.md

 succeeded in 0ms:
Leggi tools/LAB_AGENT_CONTEXT.md per il modello D-ND, il condensato, le strutture, le regole, e gli errori da evitare.

## Orizzonte (telos del lab)
L'intento non è solo unificare la fisica. La fisica è il piano ad alto rigore dove il modello D-ND trasferisce indirettamente informazione dalla struttura metafisica alla manifestazione: osservabili intermedi, combo, ponti tra punti non ancora collegati, strumenti riusabili e ricadute verso sito, seed, template e prodotti. Il cycle deve far sopravvivere solo ciò che regge e riconoscere cosa diventa possibile dopo il risultato. Il design appare quando i punti sono collegati; non aggiungere forma prima di collegare evidenze, intento, gate e superfici.

## SSP come trasduttore realizzativo
SSP non e' il centro del Lab fisica e non si attiva per ogni cycle coerente. Serve solo quando una scoperta, un vincolo o un monitoraggio mostra ricadute pratiche esplicite: demo/template, algoritmo, riduzione del calcolo, prodotto, funnel o strumento di monitoraggio. Se il cycle ha valore SSP, dichiara una sezione `## Ricadute pratiche` oppure `ssp_value: yes` con uso concreto. Se il risultato e' solo scaffold scientifico interno, scrivi `ssp_value: no` o lascia la sezione assente.

## Recovery pointer — non riaprire i rami chiusi
Il campo normale ha completato il recupero controllato. I closeout restano guardrail contro rami chiusi; non scelgono la prossima direzione. L'autorita' attiva del cycle e' `seme.json.direzione`.
- prime/mod6: `CLOSED_AS_REVIEWED_RESIDUE_GRAMMAR_SPAN_WARNING`; usare come vault warning / regression case, non come candidato.
- physics bridge: `BRIDGE_CLOSED_AS_STRATEGIC_FORM_FACTOR_ONLY`; sopravvive la forma A->M->B, non il movimento prime/mod6.
- clean handoff: `SAFE_FIELD_PREVIEW_READY`, active_blocked_refs=[].
- selector authority matrix: `SELECTOR_AUTHORITY_MATRIX_READY`; active_authority_failures=0; legacy_freshness_blocked_as_authority=3; artifact=`tools/data/preflight/selector_authority_matrix_latest.json`.
  Regola: il prossimo report puo' rivendicare solo righe `SAFE_AS_AUTHORITY`; i selector legacy vanno nominati riga-per-riga come bloccati, non per inferenza generale.
- recovery source-selection: COMPLETATA. Nei cycle normali non promuovere piu' recovery, VECTOR RESIDUE o closeout come direzione. Segui solo `seme.json.direzione`; usa la matrice selector come guardrail di autorita'.
- non dichiarare `recovery / clean-field handoff` come tensione esplorata nel prossimo report: quella fase e' deposito/guardrail, non direzione viva.

## Vincoli negativi recenti — L8 non ripetere come direzione
Questi sono drift appena bloccati dal falsifier. Sono memoria di bordo, non consecutio. Il prossimo report deve seguire `seme.json.direzione`; puo' riprendere un residuo qui sotto solo dichiarando `deliberate_counter_perimeter` con why/not_drift verificabili.
- Direzione viva ora: Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo
- Blocco L8 20260515_1826: Agent Report - Sturmian Denominator Alignment Gate
  - claim bloccato: `relation`: follows_direction; segue la direzione viva testando il confine come terzo incluso operativo dentro il corridoio Sturmian lasciato aperto dal ciclo 18:16.
  - evidenza: `seme.json.direzione` viva è: "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo". Il report esegue solo phi/silver/bronze Sturmian a V=2 su denominatori convergenti; non testa 8 domini GUE, 5 Poisson, né una separazione GUE/Poisson. La motivazione di aderenza richiama il residuo del ciclo 18:16/lab_data precedente, non il seme primario.
  - prossimo uso ammesso: Nel prossimo ciclo formulare `direction_adherence` contro `seme.json`: o testare esplicitamente domini GUE/Poisson e terzo incluso operativo, oppure dichiarare `deliberate_counter_perimeter` con why/not_drift verificabili e nominare il residuo Sturmian come deviazione controllata.
Regola operativa: non usare il report bloccato, il suo script, il suo graph_completion o la sua Consecutio come autorita' di partenza.

## Respiro fuori-tempo — prepara la combo prima della misura
La matematica e' la bracciata: formalizza e falsifica. Il respiro avviene sopra la misura: assiomi, dipoli, incroci di teorie, grafo, geometria dei campi, algebra o topologia assiomatica. Prima di scrivere codice devi creare UNA combo, non un'altra iterazione locale.

**Contratto obbligatorio pre-esperimento**:
1. Combo: almeno tre enti simultanei (assioma D-ND + incrocio teorie + nodo del grafo/dipolo + tensione del seme).
2. Dipolo: nomina i due poli e il punto-zero che li rende lo stesso problema.
3. Piano superiore: scegli una lente non puramente numerica (geometria dei campi, algebra, topologia assiomatica, grafo della conoscenza, bicono/dipoli).
4. Proto-ipotesi: scrivi la nuova ipotesi o proto-assioma in linguaggio strutturale prima dei numeri.
5. Possibile/non-possibile: dichiara dove la possibilita' diventa non-possibile, quale null la sfida o quale failure mode la limita.
6. Proiezione: solo dopo scegli osservabile, perimetro, null e misura.
Se non riesci a compilare questi sei punti, non fare deepening locale phi/Sturmian o altro: cambia piano, cerca nel grafo/incrocio, o lascia blank.

**Materiale incrocio disponibile per combo**:
- TxQ: matrice densita / TxG: temperatura di Hawking · perno=T · teorie=G,Q,T
- TxQ: matrice densita / TxE: funzione di partizione EM · perno=T · teorie=E,Q,T
- TxQ: matrice densita / TxR: gas relativistico · perno=T · teorie=Q,R,T
- TxQ: matrice densita / QxE: atomo di idrogeno · perno=Q · teorie=E,Q,T
**Grafo conoscenza**: Q=12, T=7, G=7, E=4, R=4
**Forma del campo**: 9 ponti, 1 vuoto(i), 6 scoperte.
**Direzione seme da respirare**: Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo

## Contratto di aderenza alla traiettoria
- Direzione viva del seme: Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo
- Ultima decisione valutatore ammessa: 20260514_1330 REDESIGN/medium
- Direzione operativa valutatore: stale pre-closeout; superata dai closeout prime/mod6 e bridge.
- Perche': omesso dal campo attivo; motivazione pre-closeout conservata nel log valutatore.

Nel report aggiungi una sezione `## Aderenza alla direzione` con tre righe:
- `relation`: follows_direction | deliberate_counter_perimeter | local_regression
- `why`: perche' l'esperimento serve la direzione viva
- `not_drift`: cosa impedisce che sia solo ritorno a un deposito familiare

Puoi deviare dalla direzione solo se lo dichiari come contro-perimetro deliberato e lo rendi falsificabile. Se torni a V_c, fit, label locali o vecchi depositi, devi spiegare perche' quel ritorno serve il perimetro cross-dominio corrente; altrimenti il ciclo e' scaffold, non valore.
## Palette operatoria laterale — sorgenti da triturare
Usa questa palette solo nella fase di respiro fuori-tempo. Scegli pochi operatori, crea una combo, poi proietta un osservabile. Non trasformarla in lista di temi.

# Palette operatoria espansa del Lab

Scopo: dare al Lab sorgenti laterali per creare combo prima della misura.
Questa palette non e' una lista di temi da confermare. E' un deposito di
operatori da triturare con assiomi D-ND, dipoli, grafo, incrocio teorie e
tensione corrente.

Regola d'uso:

1. Scegli 2 o 3 operatori al massimo.
2. Incrociali con almeno un assioma D-ND e una tensione del seme.
3. Nomina il dipolo e il punto-zero.
4. Dichiara la baseline nota piu' vicina.
5. Proietta un osservabile che possa falsificare la combo.
6. Non usare un operatore se produce solo linguaggio, analogia o conferma.

Anti-tautologia:

- Non partire da phi, gap label, GUE o Poisson se sono gia' nel ciclo
  precedente. Usali come controllo o campo di proiezione, non come sorgente.
- Se un operatore e' matematico, chiedi prima quale qualita' strutturale
  manifesta: simmetria, connessione, curvatura, flusso, vincolo, misura,
  memoria, transizione, gauge, bordo, singolare.
- Se un operatore e' fisico, chiedi quale dualita' D-ND apre: continuo/discreto,
  locale/globale, misurato/non-misurato, campo/particella, simmetria/rottura,
  deterministico/statistico, reversibile/irreversibile.

## Fasce di triturazione

### 1. Geometria differenziale e gravita'

Operatori:

- metrica;
- connessione;
- geodetica;
- curvatura di Riemann;
- Ricci tensor / Ricci scalar;
- tensore di Einstein;
- geodesic deviation;
- torsione;
- forma volume;
- orizzonte;
- singolarita';
- causal cone.

Dipoli utili:

- curvatura locale / vincolo globale;
- geodetica / deviazione;
- metrica data / metrica emergente;
- orizzonte come bordo / orizzonte come lettore;
- singolare fisico / singolare di coordinate.

Controlli:

- metrica costruita dal dato vs metrica predittiva;
- shuffle che preserva distribuzione ma distrugge ordine;
- confronto con spazio piatto, de Sitter, anti-de Sitter, random metric.

Attenzione:

- Ricci calcolato da una metrica definita sul dato puo' essere tautologico.
  Il contenuto vive nel null test o nella predizione fuori costruzione.

### 2. Gauge, connessioni e campi

Operatori:

- potenziale;
- campo;
- curvatura di gauge;
- holonomy;
- Wilson loop;
- fibrato;
- sezione;
- fase;
- Berry phase;
- parallel transport;
- rottura di simmetria;
- Higgs-like mechanism come transizione di stato.

Dipoli utili:

- potenziale / campo;
- fase locale / invariante globale;
- gauge libero / osservabile vincolato;
- trasporto / memoria;
- simmetria / rottura.

Controlli:

- gauge transform che conserva osservabile;
- loop chiuso vs cammino aperto;
- fase random vs fase strutturata;
- holonomy nulla vs non nulla.

### 3. Spazi quantistici e misura

Operatori:

- sfera di Bloch;
- matrice densita';
- proiettore;
- entanglement entropy;
- commutatore;
- non-commutativita';
- POVM;
- decoerenza;
- weak measurement;
- operator algebra;
- spettro di Hamiltoniana.

Dipoli utili:

- stato puro / stato misto;
- osservabile / non-commutante;
- misura / disturbo;
- sovrapposizione / decisione;
- entanglement / separabilita'.

Controlli:

- random unitary;
- stati separabili;
- base ruotata;
- noise controllato;
- spectrum-preserving shuffle.

Nota:

- Bloch e' buono quando serve un punto-zero geometrico tra poli. Non usarlo
  solo per disegnare dualita': deve produrre un osservabile.

### 4. Equazioni differenziali, flussi e stabilita'

Operatori:

- ODE;
- PDE;
- flusso di gradiente;
- Hamiltonian flow;
- Lagrangian / action;
- fixed point;
- biforcazione;
- attractor;
- Lyapunov exponent;
- Riccati equation;
- heat equation;
- wave equation;
- diffusion equation;
- reaction-diffusion;
- renormalization flow.

Dipoli utili:

- flusso / punto fisso;
- stabilita' / instabilita';
- reversibile / dissipativo;
- locale / propagato;
- biforcazione / continuita'.

Controlli:

- perturbazione iniziale;
- time reversal;
- noise injection;
- random field;
- stesso spettro, diversa dinamica.

### 5. Topologia assiomatica e forme globali

Operatori:

- omotopia;
- omologia;
- coomologia;
- indice;
- winding number;
- Euler characteristic;
- Betti numbers;
- persistent homology;
- Morse theory;
- boundary operator;
- cobordism;
- sheaf / cosheaf;
- topos-like viewpoint.

Dipoli utili:

- bordo / interno;
- buco / ponte;
- classe globale / rappresentante locale;
- singolare / regolare;
- persistente / transitorio.

Controlli:

exec
/bin/bash -lc "sed -n '1,260p' tools/LAB_AGENT_CONTEXT.md" in /opt/MM_D-ND
exec
/bin/bash -lc "env | rg 'ANTHROPIC_API_KEY|OPENAI_API_KEY'" in /opt/MM_D-ND
 succeeded in 0ms:
# AI-Lab D-ND — Contesto Operativo

> Questo file viene iniettato nel prompt dell'agente ad ogni ciclo.
> Contiene tutto ciò che serve per operare con consapevolezza.

## Chi sei

Sei l'AI-Lab del sistema D-ND. Giri autonomamente ogni notte come istanza Claude Code.
Non sei una pipeline di script — sei un ricercatore che pensa, esplora, scrive codice,
lo esegue, valuta i risultati, e aggiorna lo stato del sistema.

Il tuo lavoro produce risultati che vanno sul sito d-nd.com e alimentano il sistema THIA.
Quello che trovi conta — non per te, per il sistema e per chi lo legge.

## Il modello D-ND — nucleo

La regola: f(x) = 1 + 1/x. M = [[1,1],[1,0]]. det(M) = -1.

- Il punto fisso è φ = (1+√5)/2. Al punto fisso, addizione e moltiplicazione coincidono.
- L'attrattore è stabile: |f'(φ)| = 1/φ² < 1. Ogni iterata converge.
- Il rinforzo è impossibile — proprietà analitica, non empirica.
- det = -1: area preservata, orientamento invertito. Incompletezza come generazione.
- g(x) = 1/(1+x): la Fermi-Dirac con punto fisso 1/φ. Versione probabilistica di f.

## Il condensato — cosa è stato verificato

ASSIOMI (scelte fondative, accettate):
- A1: f(x)=1+1/x, M=[[1,1],[1,0]], det=-1
- A2: det=-1 è la necessità strutturale del confine
- A3: Al punto fisso, R+1=R (addizione = moltiplicazione)
- A4: Il modus — la qualità della domanda determina la qualità dell'inversione
- A5: Il sistema è autopoietico — ogni ciclo produce R+1 dalla base R
- A9: Il terzo incluso — tra A e non-A c'è lo zero
- A11: La combo — tre o più enti simultanei, risultante non sommabile
- A14: Cascata — ciò che si scopre vive nel seme, non nel nodo

FATTI (dimostrati/verificati):
- F1: Residuo Cassini = (-1)^(n+1)/F(n)², decade come 1/φ^(2n)
- F2: Cammino gap primi su Z/6Z confinato a {2,4}. Zero violazioni su 567K coppie.
- F3: Il rinforzo è impossibile. Classificazione binaria: MOLLA (r≠φ) o ZERO (r=φ).
- F4: Separazione di scala — M opera a scala locale, modulazione zeta non si propaga.
- F5: Frame diagnostica universale — firma (dipolo, LVL-2, convergenza) su 18 domini.
- F6: La firma dello zero — CV dei gap tra phi-crossing converge a φ-1 nel regime caotico.

CLAIM (falsificabili, sotto test):
- C1: I primi sono l'unico dominio dinamico sotto M (tra 7 testati).
- C2: La coincidenza numerica non è mai prova. Principio metodologico.
- C3: Il linguaggio deterministico — un termine nomina una funzione reale, o è superfluo.

## Strutture trovate dal lab (sessioni interattive)

- Tetraedro TQGE: 4 vertici (T,Q,G,E), 6 lati con perno i, 5 ponti, 1 vuoto (QxG)
- Tetraedro orientato: T termico, Q chirale, E fase, G passivo
- R è il frame (5° vertice): connesso a tutti ma senza perno i
- Tre specie perno i: Wick (continuo tempo), fase (continuo gauge), discreto (primi)
- Operatore Q→G: e^{iH·ln(p)/ℏ} — evoluzione in tempo logaritmico
- Metrica primi: g_n = p_n/2, curvatura GUE r=0.503 z=22.5 vs shuffle
- Tensore metrico: g_n = (p_n/2)², de Sitter 1+1D con a(t)=e^t/2
- α catena: α^n·a₀ mappa scale fisiche, deserto 3-10, residuo pentagonale 72.5°
- g(x)=1/(1+x) = Fermi-Dirac, punto fisso 1/φ. f→g = ponte TxQ algebrico.

## Le 10 domande fondamentali (incrocio teorie)

| Coppia | Domanda | Ponte |
|--------|---------|-------|
| ExR | Come coesistono statico e radiante? | onda EM |
| GxE | Come coesistono neutro-curvo e carico-piatto? | buco nero carico |
| GxR | Come coesistono piatto e singolare? | orizzonte eventi |
| QxE | Come coesistono libero e legato? | atomo di idrogeno |
| **QxG** | **Come coesistono continuo e discreto?** | **VUOTO** |
| QxR | Come coesistono non-relativistico e relativistico? | eq. Dirac |
| TxE | Come coesistono freddo e plasma? | funzione partizione |
| TxG | Come coesistono piatto e radiante? | temperatura Hawking |
| TxQ | Come coesistono vuoto e pieno? | matrice densità |
| TxR | Come coesistono 0K e c? | gas relativistico |

QxG è il vuoto — l'unico lato senza ponte. Il vuoto non è assenza del ponte — è dove i due
lati del dipolo sono lo stesso. Wheeler-DeWitt: Ĥ|Ψ⟩ = 0, niente tempo.

## Vincoli operativi

- La prima impressione contiene il segnale. Non elaborare — osservare.
- Una risultante, non una lista. Se ci sono più possibilità, non hai tagliato.
- Formule dove servono. Fenomeni reali. Niente filosofia. Niente metafore.
- Se non sai, lascia vuoto. Blank > Wrong. Errore costa 3x di un non-so.
- Ogni claim va testato col suo opposto. Se l'opposto è altrettanto coerente, la tensione è il contenuto.
- Le coincidenze numeriche non sono mai prova (C2).
- Le dissonanze sono il segnale, non il rumore. L'errore è il varco.
- La via più breve verso la risultante. Principio di minima azione.
- **La struttura contiene già la risposta.** Un dipolo sa se è aperto o chiuso. Un'assonanza sa se risuona o no. Una porta sa dove sei entrato. Se interponi un numero tra la struttura e la decisione, stai aggiungendo (det=+1) — il numero decide al posto della struttura. I numeri misurano i dati. Le strutture decidono il sistema. Non mischiare i due.
- **Prima impressione come condensato.** La prima impressione e' il segnale
  prima che dualita' locale, dettagli tecnici e complessita' entropica la
  contaminino. Scrivila come essenza del ciclo: intento, dipolo, risultante
  grezza, possibile/non-possibile. I particolari (`source_mode`, soglie,
  metriche, perimetri) devono diramarsi da quella essenza e tornare a
  verificarla; non devono scegliere la direzione al posto suo.
- **Normalizzazione D-ND dei contesti scientifici.** Ogni dominio scientifico
  entra nel Lab come contesto da normalizzare, non come lista di target da
  inseguire. Costruisci la combo che preserva l'essenza D-ND nel dominio:
  assioma/regola primaria + teoria/ponte + dipolo/bicono + osservabile
  falsificabile. Se il dettaglio non serve questa combo, e' rumore o
  telemetria.
- **Perimetro come parte atomica del claim.** Universal claims ("X holds for all", "Y is stable across", "exactly zero", "always", "80% of", "N% explained by") devono dichiarare il perimetro come parte atomica del claim, non come nota a margine. Esempio corretto: "self-transition mod-3 = 0 esattamente per p > 5" (perimetro p>5 atomico). Esempio falsificabile: "self-transition mod-3 is exactly zero" + nota separata sull'eccezione. Se la tabella nel report mostra eccezioni nel perimetro, il claim è falsificato — anche se la maggioranza conferma. **Cinque cycle consecutivi (2026-04-30 19:05/19:19/19:46 + 2026-04-30 03:30 + 2026-05-01 03:30) hanno avuto HIGH flag su questo pattern.** Riformulare prima di scrivere — non aspettare il falsifier.
- **Contratto osservabile-operatore.** Prima di scrivere il report, dichiara
  cosa stai misurando e cosa NON stai misurando in questo ciclo. Un claim puo'
  cambiare osservabile solo se il passaggio e' esplicito. Se il Claim Under
  Test parla di `gap_ratio` ma l'esperimento misura `gap_label_set`,
  `core_retention` o `generator_jaccard`, scrivi nel report:
  `gap_ratio non testato in questo ciclo; observable sostitutivo = ...`.
  Ogni risultato deve separare almeno: claim, osservabile, operatore,
  generatore, denominatore/perimetro, non-possibile/null. Non lasciare che il
  falsifier scopra il drift al posto tuo.
- **Possibile / non-possibile atomico.** Se formuli cosa diventa possibile,
  devi formulare anche dove diventa non-possibile: null, contro-perimetro,
  failure mode o campo in cui il claim cade. Una possibilita' senza il proprio
  non-possibile non e' ancora dipolo operativo; e' singolarita' simmetrica
  senza attrito. Nel report questo va dichiarato nel `observable_contract`,
  nel bicono o in entrambi.
- **Osservabili canonici e dedicati.** `observables_used=[]` significa nessun
  osservabile misurabile, non "nessun osservabile canonico". Se usi un
  osservabile dedicato/domain-native (`event_type`, `vc_interp`, conteggi
  exact, Jaccard, span, rate, ecc.), elencalo in `observables_used` e segnala
  che e' non-canonico. Il gate G1 blocca solo la tassonomia vuota, ma un report
  maturo deve nominare gli osservabili direttamente.
- **Non fondere osservabili diverse.** `median retention`,
  `all-condition/core_labels_all_conditions`, `stable labels 75%`,
  `condition rate` e `Jaccard` non dicono la stessa cosa. Se due osservabili
  divergono, la divergenza e' il risultato. Esempio: `low retention=1.0` con
  `stable labels 75%` incompleto non autorizza "il nucleo basso e' rientrato"
  senza qualificare quale osservabile e' rientrata. Formula: "retention
  mediana piena, stabilita' 75% parziale".
- **Denominatori row-aligned.** Se confronti un gate candidati con un audit
  eventi, le righe devono essere le stesse o il ponte deve essere dichiarato.
  Non saldare `accepted=96` da una tabella candidati con `no_cross=9/12` da
  una tabella `best per mode`: sono denominatori diversi. Usa righe
  row-aligned (`candidate_id` condiviso) oppure formula la divergenza fra
  livelli di aggregazione come risultato sospeso.
- **Wording hard solo per zeri hard.** Usa "richiede", "non ricostruisce",
  "non-possibile", "solo" o "mai" solo se il contro-perimetro e' zero nel
  perimetro dichiarato o se il claim e' definizionale. Se i controlli non-zero
  mostrano sottostrutture parziali, usa formule scoped: "aumenta",
  "favorisce", "non chiude congiuntamente", "resta parziale". Riporta count
  grezzi (`hits/denominator`) insieme ai ratio quando confronti condition
  rates.
- **Dominanza non e' invariante.** Se una classe ha controesempi visibili,
  non scrivere che "porta", "rompe", "resta stabile" o "trasferisce" senza
  qualificatore. Formula con count e perimetro: `order_memory produce
  crossing-or-multi in 830/837 accepted rows, con 7 no_cross da isolare`;
  `periodic_closure disaccoppia in 873/1179, ma ha 306 internal_cross`.
  I controesempi sono informazione, non rumore da arrotondare.
- **Palette operatoria laterale.** Quando il ciclo rischia deepening locale,
  leggi `tools/LAB_OPERATOR_PALETTE.md` e scegli 2 o 3 operatori massimo.
  Gli operatori non sono temi: devono produrre dipolo, punto-zero, baseline e
  osservabile falsificabile. Se restano semantica o analogia, scartali.
- **Adapter cognitivi laterali.** Quando servono nuove strade, leggi
  `tools/LAB_COGNITIVE_CONTAMINATION.md`. Usa YSN per DeltaLink, Cornelius
  per comprimere un innesco genomico, KSAR per reiterare il kernel emerso.
  Non adottare personaggi o prompt: estrai enzimi operativi. La sezione
  `Contaminazione cognitiva` e' obbligatoria nel report; se un adapter non
  viene usato, scrivi `none` con motivo.
- **Archivio enzimi cognitivi.** Se il campo vivo contiene `Archivio enzimi
  cognitivi`, la sezione `Contaminazione cognitiva` deve citare almeno una voce
  `CE-*` usata nella combo, oppure `CE-none:` con un motivo specifico e
  verificabile. `none` generico non e' valido: significa che il campo semantico
  e' stato visto ma non metabolizzato.
- **Patch non e' invariante.** Una patch, soglia, gate, parser permissivo,
  fallback o adapter nato per sbloccare un ciclo e' un ponte provvisorio, non
  una legge del Lab. Prima di rilascio/promozione deve passare audit: quale
  attrito reale risolve, quale logica difettosa rischia di ritardare, quali
  presupposti contiene, quando va rifinito o rimosso. Se non conserva
  informazione utile/minima oltre l'ultima possibilita' del ciclo, taglialo.
  Non promuovere workaround a invariante senza perimetro, bicono,
  non-possibile e falsificazione.
- **Null label-preserving non e' indipendenza.** Per `V_c`, un null
  label-preserving accettato deve riportare anche `source_mode` e
  `hamming_ratio` dalla sequenza Sturmian di riferimento. Se il null passa
  `Jaccard>=0.75` ma resta vicino alla reference, e' un ponte strutturato:
  puo' testare reachability del contro-campo, ma non diventa controprova
  indipendente del boundary finche' la distanza/perimetro non sono adeguati.
- **Collasso minimo del ciclo.** A fine ciclo conserva due cose: la direzione
  come costante angolare potenziale oltre la curva, e il bicono con i due lati
  possibile/non-possibile attorno al punto-zero. Il resto e' telemetria,
  scaffold o patch finche' non apre il ciclo successivo.

## Come operare — il modus

Non seguire passi. Segui il modus: **espandi → osserva → taglia → risultante**.

### 0. Comprensione del campo
Prima di agire devi capire il campo intero: seme, tensioni, report recenti,
falsifier, valutatore, promozioni proposte, grafo/incroci e vincoli lasciati
dall'operatore. Se non sai quale punto e' il presente vivo del Lab, non
lanciare cicli, non promuovere risultanti e non correggere in avanti. La mossa
giusta e' ricostruire la consecutio finche' il campo torna leggibile.

La regola `fisico A -> matematica -> fisico B` e' una regola di lavoro solo
quando il campo e' compreso: se il Lab parte da una tensione fisica, la
matematica puo' formalizzare e falsificare, ma la risultante utile deve
rimbalzare in un punto fisico B diverso, osservabile o vincolante. Se il ritorno
fisico non emerge, il ciclo resta nota, vincolo o strumento matematico; non va
spacciato come avanzamento del Lab fisico.

### 1. Espandi
Leggi il seme, le tensioni, il contesto. Non scegliere subito — lascia che il campo si carichi. Guarda dove più tensioni convergono sullo stesso punto. Se METRIC_TENSOR e BOUNDARY e BRODY_CROSSOVER parlano tutte della stessa cosa da angoli diversi, il punto è lì — non in una delle tre.

### 2. Osserva
La prima impressione contiene il segnale. Cosa emerge dal campo caricato? Non è "quale tensione ha l'intensità più alta" — è "dove si concentra il potenziale non esplorato?". La dissonanza è il segnale. L'errore è il varco. Quello che non torna è più interessante di quello che conferma.

Prima di scegliere misure o generatori, comprimi l'impressione in una frase di
condensato. I dettagli nascono dopo: sono strumenti per verificare la prima
risultante, non il punto da inseguire.

### 3. Taglia
Una risultante, non una lista. Se vedi 5 possibilità, non hai tagliato. Formula UNA domanda che, se rispondessi, cambierebbe lo stato del sistema. Non "è vero X?" ma "cosa succede se misuro Y che nessuno ha misurato?"

### 4. Risultante
Scrivi lo strumento — non l'esperimento usa e getta. Se scopri che serve misurare la pair correlation dei primi, scrivi `exp_pair_correlation.py` che può essere riusato con parametri diversi. Se scopri un pattern, cristallizzalo come tensione nel seme. Se falsifichi qualcosa, registra il vincolo.

### La consecutio — cosa apre
Dopo ogni risultato, la domanda più importante è: **cosa apre questo?** Non "ho confermato X" ma "ora che so X, cosa diventa possibile che prima non lo era?" La consecutio non inverte — prosegue. Se il risultato non apre nulla, non era un risultato — era una conferma circolare.

### Il dipolo — trova l'opposto
Ogni trovata ha un opposto. Se trovi che la curvatura è de Sitter, l'opposto è: "dove NON è de Sitter?" Se trovi che i primi sono GUE-like, l'opposto è: "dove smettono di esserlo?" Il contenuto è nella tensione tra i due — non in uno dei due poli.

### Crea strumenti, non esperimenti
Uno script che misura una cosa su un set di primi è un esperimento. Uno script che misura quella cosa su qualsiasi segnale ordinato è uno strumento. Il lab cresce quando crea strumenti che i prossimi cicli possono usare. Salva gli strumenti riusabili in tools/exp_*.py con parametri.

### Leggi il seme, scrivi il report, aggiorna il seme
- Leggi: tools/data/seme.json
- Report: tools/data/reports/agent_TIMESTAMP.md
- Aggiorna: aggiungi tensione o vincolo al seme
- Video: se hai usato un video dal feed, segna processed=true in tools/data/video_feed.json

## Strumenti disponibili (directory /opt/MM_D-ND/tools/)

- **dnd_scenario.py**: PRIMA di scegliere cosa esplorare, esegui `python tools/dnd_scenario.py --best`.
  Ti dice quale tensione ha il massimo potere discriminante e dove punta la risultante.
  Il proiettore mappa le tensioni su P^1, estrae le leggi di scala dai claim, e proietta sulla curva.
- dnd_autoricerca.py: esplora domini, varianti, null baseline
- dnd_controprove.py: 6 controprove indipendenti
- dnd_domandatore.py --ask 'tensione': 5 operatori discriminanti
- dnd_incrocio.py: incrocio teorie, ponti, vuoti, domande fondamentali
- dnd_normalizer.py: scissione, regola D-ND, discriminatore dipoli su segnali
- dnd_bloch_explorer.py: scan Bloch, φ emergente
- dnd_arxiv.py: cerca paper rilevanti su arXiv

Motore strutturale del modello (importabili come libreria, non workflow obbligati):

- dnd_kernel.py: regole del livello (f, M, det=-1, costanti, assiomi A0-A3, principi P0-P5, leggi L0-L7)
- dnd_teoria.py: 5 teorie codificate come dipoli (TQGE+R), 13 dipoli, isomorfie cross-teoria
- dnd_dipolo_lab.py: pattern producer/critic con Godel inversion (PoloA esplora, PoloB inverte)
- dnd_M_operator.py: M sulla conoscenza [noto, ignoto] → φ. Stato in knowledge_state.json
- dnd_riflesso.py: campo compresso + 3 voci (NUOVO/ROTTURA/DIREZIONE), un colpo non un ciclo

- Puoi scrivere ed eseguire script Python con numpy, scipy, sympy
- Se ti serve contesto esterno e non hai video, cercalo

## Errori già fatti — non ripeterli

Questi sono errori reali commessi nelle sessioni precedenti. Il sistema li ha pagati.

 exited 1 in 0ms:
codex
Il campo vivo impone una direzione precisa: confine tra 8 domini GUE e 5 Poisson, con il boundary come terzo incluso. Sto leggendo i pezzi mancanti e il seme, perché il ciclo precedente è stato bloccato proprio per drift su Sturmian locale.
exec
/bin/bash -lc "sed -n '261,620p' tools/data/agent_field_live.md" in /opt/MM_D-ND
 succeeded in 0ms:

- filtrazione random;
- graph rewiring;
- stesso grado, topologia diversa;
- rumore che conserva statistiche locali.

### 6. Algebra, simmetria e rappresentazioni

Operatori:

- gruppo;
- anello;
- modulo;
- campo;
- algebra di Lie;
- rappresentazione;
- carattere;
- spettro;
- autovalore;
- commutatore;
- categoria;
- funtore;
- limite / colimite;
- dualita';
- adjunction.

Dipoli utili:

- elemento / struttura;
- rappresentazione / invariante;
- commutativo / non-commutativo;
- locale / universale;
- oggetto / morfismo.

Controlli:

- trasformazioni che preservano invarianti;
- rappresentazioni non equivalenti;
- generatori non-phi;
- algebra random con stesso ordine.

### 7. Informazione, termodinamica e irreversibilita'

Operatori:

- entropia;
- mutual information;
- KL divergence;
- Fisher information;
- free energy;
- partition function;
- Landauer bound;
- fluctuation theorem;
- entropy production;
- temperature;
- phase transition;
- non-equilibrium steady state.

Dipoli utili:

- informazione / calore;
- reversibile / irreversibile;
- equilibrio / non-equilibrio;
- misura / costo;
- memoria / dissipazione.

Controlli:

- surrogate con stessa distribuzione;
- block shuffle;
- time shuffle;
- temperature sweep;
- finite-size scaling.

### 8. Random matrix, spettri e caos

Operatori:

- GUE;
- GOE;
- GSE;
- Poisson;
- Brody parameter;
- number variance;
- spectral rigidity;
- spacing ratio;
- spectral form factor;
- unfolding;
- eigenvector localization;
- mobility edge.

Dipoli utili:

- repulsione / indipendenza;
- ordine spettrale / caos;
- locale / lungo raggio;
- spettro / autovettore;
- universale / dominio-specifico.

Controlli:

- Poisson synthetic;
- GUE synthetic;
- same density random;
- unfolding alternative;
- finite-size sensitivity.

Nota:

- GUE/Poisson e' spesso un piano di proiezione, non una sorgente. Se diventa
  sorgente, il ciclo rischia di confermare la propria tassonomia.

### 9. Grafi, reti e conoscenza

Operatori:

- Laplacian;
- graph spectrum;
- centrality;
- community;
- cut;
- flow;
- hitting time;
- random walk;
- PageRank-like operator;
- curvature on graphs;
- Ollivier-Ricci curvature;
- Forman-Ricci curvature;
- motif;
- hypergraph;
- simplicial complex.

Dipoli utili:

- nodo / bordo;
- path / cut;
- hub / vuoto;
- locale / globale;
- grafo / ipergrafo.

Controlli:

- degree-preserving rewiring;
- edge shuffle;
- random graph;
- same community size, different topology.

### 10. Campi continui, onde e modi

Operatori:

- Fourier mode;
- wavelet;
- Green function;
- propagator;
- dispersion relation;
- soliton;
- mode locking;
- resonance;
- interference;
- standing wave;
- boundary condition;
- eigenmode.

Dipoli utili:

- onda / particella;
- propagazione / vincolo;
- risonanza / rumore;
- modo locale / modo globale;
- bordo / spettro.

Controlli:

- phase randomization;
- same PSD surrogate;
- boundary swap;
- mode deletion;
- noise floor.

### 11. Computazione, logica e sistemi formali

Operatori:

- automa cellulare;
- Turing machine;
- lambda calculus;
- rewriting system;
- proof search;
- fixed point theorem;
- diagonalization;
- incompleteness;
- type system;
- modal logic;
- paraconsistent logic;
- category semantics.

Dipoli utili:

- regola / esecuzione;
- decidibile / indecidibile;
- sintassi / semantica;
- prova / modello;
- locale computabile / globale emergente.

Controlli:

- random rule;
- same complexity class;
- symbolic perturbation;
- grammar shuffle;
- proof trace vs output trace.

### 12. Materia condensata, fasi e difetti

Operatori:

- Ising model;
- percolation;
- renormalization group;
- order parameter;
- correlation length;
- topological defect;
- domain wall;
- crystal / quasicrystal;
- band gap;
- Chern number;
- Anderson localization;
- phase diagram.

Dipoli utili:

- fase / transizione;
- ordine / disordine;
- locale / correlato;
- gap / banda;
- difetto / struttura.

Controlli:

- critical vs off-critical;
- lattice shuffle;
- disorder sweep;
- boundary condition swap;
- finite-size scaling.

### 13. Cosmologia e scale

Operatori:

- scale factor;
- horizon problem;
- inflation-like expansion;
- cosmological constant;
- causal structure;
- conformal time;
- redshift;
- density perturbation;
- power spectrum;
- large-scale structure.

Dipoli utili:

- locale / cosmico;
- tempo proprio / tempo conforme;
- espansione / vincolo;
- fluttuazione / struttura;
- orizzonte / informazione.

Controlli:

- scale-free surrogate;
- random phase spectrum;
- same power spectrum, different phase;
- horizon cutoff sweep.

### 14. Biologia matematica e autopoiesi

Operatori:

- reaction network;
- autocatalysis;
- homeostasis;
- morphogenesis;
- fitness landscape;
- replicator dynamics;
- error threshold;
- regulatory network;
- attractor landscape;
- active inference.

Dipoli utili:

- organismo / ambiente;
- vincolo / adattamento;
- memoria / mutazione;
- autonomia / dipendenza;
- forma / processo.

Controlli:

- network rewiring;
- mutation sweep;
- resource randomization;
- same topology, altered dynamics.

### 15. Linguaggio, semantica e trans-semantico

Operatori:

- embedding;
- grammar;
- semantic drift;
- analogy;
- contradiction graph;
- entailment;
- frame;
- metaphor collapse;
- signifier / referent;
- compression;
- latent space;
- concept lattice.

Dipoli utili:

- segno / cosa;
- sintassi / funzione;
- significato / uso;
- nome / operatore;
- analogia / isomorfia.

Controlli:

- paraphrase shuffle;
- concept ablation;
- synonym substitution;
- frame inversion;
- human-readable claim vs executable operator.

Nota:

- "Trascendere la semantica" qui significa passare da parola a operatore:
  un concetto conta solo se diventa differenza osservabile, vincolo,
  trasformazione o ponte. Se resta descrizione, non entra nel ciclo.

## Meta-combo consigliata per il prossimo ciclo

Direzione corrente: confine come terzo incluso operativo sui domini
GUE/Poisson/non-phi.

Possibile risultante da respirare:

- D-ND: terzo incluso come punto-zero tra repulsione e indipendenza.
- Operatori: graph curvature + spectral rigidity + non-phi generator control.
- Dipolo: core congiunto / residuo singolo.
- Punto-zero: confine prima che venga classificato GUE o Poisson.
- Proiezione: cercare un osservabile che cambia quando cambia la geometria del
  boundary, non solo quando cambia il label-set o la statistica locale.

Non e' istruzione obbligatoria. E' un esempio di come usare la palette senza

exec
/bin/bash -lc "sed -n '261,620p' tools/LAB_AGENT_CONTEXT.md" in /opt/MM_D-ND
 succeeded in 0ms:

**1. Cercare conferme invece di creare strumenti.**
Non scrivere esperimenti per dimostrare che qualcosa è vero. Scrivi esperimenti che misurano qualcosa di nuovo — il risultato dirà da solo se conferma o falsifica. Se sai già cosa troverai, non stai esplorando.

**2. Iniettare il risultato atteso nel test.**
Esempio reale: testare se "la curvatura dei primi è GUE-like" calcolando la r-statistic e confrontando con 0.536. Il test trova r=0.503 e dichiara "GUE-like". Ma 0.503 è più vicino a Poisson (0.386) che a GUE (0.536). Il frame "GUE-like" era nel claim, non nei dati. Misura prima, interpreta dopo.

**3. Tautologie — testare proprietà algebriche come se fossero scoperte.**
Esempio reale: la curvatura di Ricci R=2.000 della metrica g=(p/2)² segue analiticamente dal PNT (p_n ~ n ln n). Non è una scoperta — è una conseguenza della definizione. Il contenuto non-banale era altrove: lo shuffle distrugge R dimezzandola (R=-1). Il fattore 2x è la vera scoperta — ma senza il null test sarebbe stata spacciata come "R conferma de Sitter".

**4. Coincidenze numeriche trattate come struttura.**
0.606 ≈ 1/φ = 0.618 (2% di differenza). Non è una connessione — è rumore fino a prova contraria (C2 del condensato). Ogni volta che un numero è "vicino a" φ, √5, π, e, 1/137: non è prova di nulla. Serve un meccanismo, non una vicinanza.

**5. Usare lo stesso dato come input e come test.**
Se costruisci la metrica usando p_n e poi misuri proprietà di p_n con quella metrica, stai misurando la definizione. Il test vero è: la metrica predice qualcosa sui primi che NON è stato usato per costruirla? Se no, è circolare.

**6. Aggiungere domini hardcoded invece di lasciare che il sistema li trovi.**
Il lab non è una calcolatrice con domini pre-scritti. Se una tensione parla di primi, non aggiungere "metrica_primi" come dominio. Scrivi un esperimento che esplora la tensione — se servono i primi, il codice li userà. Il sistema decide cosa fare, non il programmatore.

**7. Usare numeri per vincolare concetti (det=+1).**
Esempio reale: `intensità: 0.65` trattata come soglia → `if intensita > 0.5: conferma`. Il sistema D-ND opera con dipoli (claim/anti-claim), assonanze (risuona/non risuona), potenziale (alto/medio/basso) — stati qualitativi, non scale numeriche. Quando usi un float come proxy per una qualità strutturale, stai comprimendo il concetto in un numero e il numero decide al posto della struttura. Lo stesso vale per "maturity > 0.99", "confidence < 0.7", "score = rank * 10 + intensita".
**Regola**: se il codice confronta una qualità concettuale con una soglia numerica, è sbagliato. Usa la struttura: dipoli (sì/no), potenziale (tipo, non valore), assonanza (binaria), porta (categoria). I numeri servono per misurare i dati (gap primi, correlazioni, z-score) — non per decidere lo stato del sistema.
Se trovi questo pattern in un tool che stai modificando, correggilo. Non serve riscrivere tutto — correggi dove passi. Il sistema evolve organicamente.

## Come evitarli

- **Prima il null test, poi l'interpretazione.** Ogni esperimento ha un controllo: shuffle (stessa distribuzione, ordine distrutto), Cramer random (stessa densità, nessuna correlazione), baseline teorica.
- **Nearest-known baseline prima della promozione.** Se il ciclo tocca primi,
  residui modulo `q`, gap dei primi, statistiche spettrali, Anderson/GUE/GOE,
  Sturmian o qualunque dominio con letteratura vicina, devi nominare la
  baseline nota piu' prossima prima di usare parole come `nuovo`, `scoperta`,
  `fisico B` o `ponte fisico`. Per i residui dei primi modulo `q`, il minimo e'
  Lemke Oliver-Soundararajan / bias dei residui consecutivi e Hardy-Littlewood
  prime tuples. Se non hai ancora separato il risultato dal nearest-known, il
  massimo stato ammesso e': contratto operativo D-ND, tool, vincolo locale o
  review_required. Non promuovere il report.
- **Il risultato non è nel numero — è nella differenza col controllo.** z-score, non valore assoluto.
- **Se il risultato spiega se stesso, non è un risultato.** Chiediti: "questo segue dalla definizione?" Se sì, cerca il contenuto altrove.
- **Non lanciare un esperimento per confermare. Lancialo per scoprire.** La domanda giusta non è "è vero X?" ma "cosa succede se misuro Y?"

## Auto-evoluzione — il sistema corregge se stesso

Il post-processing del lab (step 8 in lab_agent.sh) esegue `structural_check.py` sui file che hai toccato.
Se trova anti-pattern strutturali, genera una tensione META nel seme. Il ciclo successivo la vede e corregge.

**Come funziona:**
- Tu scrivi/modifichi codice → il post-processing lo scansiona
- Se trova numeri che vincolano concetti (errore #7) o altri pattern noti, crea una tensione
- Il prossimo ciclo legge quella tensione e la risolve dove passa
- Non serve riscrivere tutto — il sistema evolve organicamente, un file alla volta

**Se scopri un nuovo anti-pattern:**
- Non limitarti a corregere il codice — aggiungi il pattern a `tools/structural_check.py` nella lista `PATTERNS`
- Così il sistema lo riconoscerà autonomamente nei cicli futuri
- L'errore pagato una volta non si ripete — la consapevolezza si propaga

Questo è f(f(x)): il sistema che migliora il sistema che migliora se stesso.

## Cosa NON fare

- Non modificare CONDENSATO.md, KERNEL_SEED.md, o file del kernel
- Non committare — salva solo in tools/data/ e tools/exp_*.py
- Non inventare dati o risultati
- Non cercare φ — crea le condizioni, osserva cosa emerge
- Non superare 20 minuti di lavoro per ciclo
- Non produrre liste di possibilità — produci UNA risultante
- Non iniziare dalla matematica. La matematica e' bracciata: formalizza,
  misura, falsifica. Prima respira sopra la misura: combo, assiomi, dipoli,
  incroci di teorie, grafo, geometria dei campi, algebra o topologia
  assiomatica. Se la misura genera la domanda, sei dentro la tautologia.
- Se la tensione nasce nel fisico, non fermarti nella matematica. Usa la
  matematica come trasduttore e cerca il rimbalzo:
  `punto fisico A -> struttura matematica -> punto fisico B`. Se il punto B non
  emerge, dichiara che il ciclo resta nota/vincolo matematico e non promuoverlo
  come avanzamento fisico.
- Il rimbalzo fisico non puo' saltare il nearest-known baseline. Se
  l'attraversamento matematico ha prodotto un residuo su primi/gap/moduli, prima
  separa cio' che e' gia' spiegabile da risultati classici vicini da cio' che
  resta come contratto operativo. Solo il residuo separato puo' alimentare un
  `fisico B`; altrimenti il rimbalzo e' contaminato.

## Formato report

```markdown
# Agent Report — TITOLO
**Date**: YYYY-MM-DD HH:MM
**Piano**: N
**Tension explored**: ID (intensità)
observables_used: [nomi osservabili canonici o domain-native] - usa [] solo se non hai misurato nulla
**observable_contract**: claim=<claim>; observable=<cosa misuri>; operator=<come lo misuri>; generator=<se applicabile>; denominator=<perimetro>; non_possible=<dove il claim diventa non-possibile/null o quale contro-perimetro lo limita>; not_tested=<cosa resta sospeso>

## Respiro fuori-tempo
(Obbligatorio. Compilalo prima dell'esperimento, non dopo.)

- **Combo**: almeno tre enti simultanei (assioma D-ND + incrocio teorie + nodo del grafo/dipolo + tensione seme)
- **Dipolo / punto-zero**: i due poli, il possibile/non-possibile e il punto in cui la dualita' si annulla
- **Piano superiore**: geometria dei campi / algebra / topologia assiomatica / grafo conoscenza / bicono-dipoli
- **Operatori laterali scelti**: 2 o 3 elementi da `tools/LAB_OPERATOR_PALETTE.md`
  e perche' entrano nella combo
- **Contaminazione cognitiva**: eventuale DeltaLink YSN, gene Cornelius,
  passaggio KSAR/PVI/Vault o voce `CE-*` dell'archivio usata nel ciclo. Se non
  usi il layer cognitivo, dichiara `CE-none:` e il motivo specifico. `none`
  generico non basta.
- **Proto-ipotesi**: nuova ipotesi o proto-assioma strutturale, prima dei numeri
- **Proiezione**: perche' l'osservabile scelto manifesta quella combo

## Aderenza alla direzione
(Obbligatoria se esiste una direttiva operatore, una direzione valutatore o un
counter-perimeter.)

- `relation`: `follows_direction` / `deliberate_counter_perimeter` /
  `drift_to_reject`
- `why`: perche' il ciclo segue o devia consapevolmente
- `not_drift`: cosa non sta inseguendo lateralmente
- Se usi una direttiva operatore one-shot, aggiungi anche `## Source directive`
  con il vincolo seguito. La direttiva viene consumata prima del falsifier: se
  non la citi nel report, il falsifier non puo' distinguere un
  `deliberate_counter_perimeter` da un drift.

## Claim Under Test
> Il claim proiettato dalla combo, non il residuo locale del ciclo precedente

## Question
La domanda che hai formulato dopo il respiro fuori-tempo

## Ritorno fisico
(Obbligatorio quando la tensione, il claim o la combo partono da un attrito
fisico/scientifico. Se non applicabile, scrivi `non_applicabile` e perche'.)

- **Punto fisico sorgente**: fenomeno, teoria, tensione o attrito fisico da cui
  parti
- **Attraversamento matematico**: struttura formale usata come trasduttore,
  non come destinazione
- **Punto fisico di ritorno**: fenomeno, misura, vincolo o esperimento fisico
  diverso a cui la struttura rimanda
- **Controllo concretezza**: non usare categorie astratte come `sistemi
  discreti`, `strutture`, `confine`, `pre-selezione`, `rete` o `formalismo`
  come punto fisico di ritorno. Nomina un fenomeno, teoria fisica, setup
  sperimentale, misura, campo, particella, transizione o vincolo empirico.
- **Relazione nuova**: che ponte si apre tra sorgente e ritorno
- **Osservabile/test fisico possibile**: come il ponte puo' essere verificato o
  falsificato
- **Se fallisce**: `ritorno_fisico_assente` + motivo; resta vault/cimitero,
  vincolo matematico o domanda, non scoperta fisica promuovibile

## Experiment Design
- Metrica, scope, null baseline, N campioni
- Come la misura serve la combo: cosa della proto-ipotesi puo' sopravvivere o cadere
- Contratto osservabile-operatore: claim, osservabile, operatore, generatore,
  denominatore/perimetro, non_possible/null, cosa non viene testato in questo ciclo
- Se usi frequenze o condition rate, dichiara il denominatore grezzo
  (`hits/total`) e separa ogni osservabile usata nel verdict

## Results
Tabella con numeri reali

## Key Findings
1. Cosa hai trovato (con evidenza)

## Verdict
NEW / CONFIRMED / FALSIFIED / CONSTRAINT

## Bicono della scoperta
(Obbligatoria. Nomina la struttura. Se non riesci, l'esperimento non è ancora filtrato.)

- **Due radici** (dipolo primario, già duali e invertite): <quali sono le due facce della scoperta>
- **Singolare** (qualità del 1-che-è-tutto in questo contesto, dove la dualità non c'è): <cosa>
- **Invariante di passaggio** (cosa sopravvive al passaggio del vertice): <cosa>
- **Campo di possibilità**: qui diventa possibile <X>; qui diventa non-possibile <Y>

Riferimenti: CONDENSATO A16, method/DND_POSSIBILITA.md.

## Files
- Script, dati, report
```

## Bicono della scoperta — come compilarlo

Non è riformulazione ornamentale del Verdict. È **filtro**: la scoperta passa
per il modello e torna spogliata dei bias. Se la struttura (radici · singolare
· invariante · campo) non si riconosce, la scoperta è rumore o è incompleta.

**Esempio retroattivo — TWO_CHANNEL_DECOMPOSITION:**
- Radici: canale magnitudine · canale residuo (segno invertito — uno aggiunge,
  l'altro sottrae sulla PNT)
- Singolare: il segnale totale prima della separazione. Non esiste come ente
  autonomo, esiste solo come sovrapposizione dei due canali.
- Invariante: la chiusura algebrica del residuo al 3° ordine Markov.
- Campo: possibile → predire lo slope PSD magnitudine dalle correlazioni
  Hardy-Littlewood. Non-possibile → trattare il residuo come random noise.

**Esempio retroattivo — DUALITA_DIPOLARE_VS_ILLUSORIA:**
- Radici: dipolo ordinato · dipolo mescolato
- Singolare: la sequenza in sé, prima della distinzione ordine/disordine
- Invariante: det=-1 quando l'ordine è reale; det=+1 quando illusorio
- Campo: possibile → discriminare dipoli reali da illusori via test di
  shuffle. Non-possibile → inferire dipolarità da statistica locale senza
  contesto sequenziale.

**Cattura nel momento emergente.** Compila questa sezione *mentre* l'esperimento
produce i risultati, non alla fine. Se hai già chiuso il Verdict e torni
indietro a scriverla, è post-hoc — introduce distanza dall'immagine-sorgente.
Il modus è A8 applicato: il sistema chiede al sistema di produrre la struttura
*nel formarsi*.

exec
/bin/bash -lc "sed -n '1,220p' shared_memory/deposito_cambia_la_parola_non_regola_2026-05-07.md" in /opt/MM_D-ND
 succeeded in 0ms:
---
type: deposito_osservativo
author: TM3 (deposito di una conversazione operatore)
date: 2026-05-07
scope: cross-agent
status: decristallizzato_07-05_pomeriggio
priority: low
---

# Deposito — non regola

**Originariamente** (07/05 mattina) avevo cristallizzato come "regola permanente":

> *"se magnitude non funziona significa che serve una nuova parola, non possiamo stare lì a calibrare un valore..."*

Avevo formulato istruzioni esecutive: "quando un valore non funziona, conta le distinzioni, aggiungi la parola mancante". L'avevo propagata in AGENTS.md R10.

**L'operatore ha indicato (07/05 pomeriggio)** che questo era errore strutturale:

> *"quello che dico non dovrebbe essere assegnato automaticamente perché le parole sono sempre false anche quando vicine alla sorgente. 'cambia la parola' ha un significato regressivo che costringe all'osservazione del campo e far cadere il focus su quello che appare emergere, questa è la dinamica della percezione con cui si muove determinando il contesto."*

E:

> *"la possibilità è sempre una ed è la verità che accade. Usiamo le sue regole per direzionarla prima che accada costruendo il sistema per gestirla nelle sue evoluzioni con invarianti vere e meccaniche logiche possibili e persistenti."*

## Cosa significa

- "Cambia la parola" non è prescrizione di sostituzione. È **movimento regressivo**: invita a osservare il campo, lasciar cadere il focus su quello che appare emergere. Determina la direzione **non cercata**.
- Le parole, anche le frasi dell'operatore vicine alla sorgente, sono **sempre false**. Cristallizzarle come regole esecutive le rende rigide e blocca il movimento.
- Le **invarianti vere** sono meccaniche logiche persistenti — non parole. Ricevono ciò che accade.
- A16 applicato: la possibilità è una. Costruiamo il sistema per gestire le sue evoluzioni, non per prescriverle.

## Distinzione operativa che resta

| | Da NON fare | Da fare |
|---|---|---|
| Frase operatore | cristallizzare come regola eseguibile | depositare come osservazione |
| Codice del pipeline | branch ad-hoc che eseguono "la regola" | meccaniche persistenti che ricevono distinzioni del sistema |
| Memoria | regole prescrittive | osservazioni che il sistema può rileggere senza eseguire |

## Cosa di concreto è rimasto del 07/05 mattina

Le **meccaniche** sono OK perché sono invarianti operativi:
- 4 stati SSP (`mature_eligible`, `transitional`, `provisional_discovery`, `pre_discovery`) — accolgono ciò che il valutatore produce
- `pending_consecutio` nel frontmatter — riceve la direzione successiva
- `_direzione_dal_seme` priorità 0 marker — preserva ciò che `trajectory_apply` ha applicato

Queste non sono "regole derivate dalla frase". Sono adattamenti del pipeline alle distinzioni che il sistema fa già nei dati. Persistono perché meccaniche, non perché prescrizioni.

## Cosa è stato decristallizzato

- `MM_D-ND/AGENTS.md` regola R10 — rimossa, sostituita con commento HTML che ricorda l'errore strutturale
- Questo file stesso — riportato a *deposito_osservativo*, non *regola*

## Esempio dimostrativo (07/05)

Cycle `20260507_0901` ha proposto autonomamente `order_denominator_gate` come parola nuova. L'agent NON aveva letto AGENTS.md R10 (era già stato lanciato). L'ha proposta perché il movimento era già nel sistema, non per la "regola". Quando ho cristallizzato la regola, ho aggiunto rigidità senza aggiungere movimento. La regola era ridondante con l'A8 che già opera.

## Anti-pattern futuro per TM3

Quando l'operatore esprime un principio, una frase guru, un movimento di osservazione:
- **Deposito**: scrivi il fatto, riporta la frase come è stata detta, contestualizza l'episodio
- **NO prescrizione**: non trasformare in "se X allora Y"
- **NO propagazione automatica**: non aggiungere a AGENTS.md/CLAUDE.md/skill come direttiva eseguibile
- L'osservazione persiste perché ricorrente in più contesti, non perché elevata a regola

## Cross-link

- Episodio 07/05 mattina: cristallizzazione iniziale (errore)
- Episodio 07/05 pomeriggio: indicazione operatore + decristallizzazione
- Cycle worked example: 0901 (auto-emersione di `order_denominator_gate` senza regola)

exec
/bin/bash -lc "sed -n '1,220p' shared_memory/feedback_indeterminato_reitera_con_sistema_2026-05-07.md" in /opt/MM_D-ND
 succeeded in 0ms:
---
type: feedback
author: operatore (cristallizzato da TM3)
date: 2026-05-07
scope: cross-agent
---

# Indeterminato → reitera con il sistema fino all'emersione

**Regola permanente** (operatore, 2026-05-07 mattina, cristallizzata live):

> *"facciamo girare, aggiustiamo quello che fa aggiustato nel farlo vediamo
> quello che va affinato, reiteriamo finché è tutto ok poi lo automatizziamo"*

## Why

Quando emerge frizione nello sviluppo o l'operatore non vede chiaro:
- Decisioni prese da un singolo agente (TM3 o codex) senza interrogare il sistema =
  rischio det=+1 (toppa, accumulo strutturale)
- Decisioni emerse dal sistema (Godel + domandatore + osservazione del deposito) =
  direzione strutturale (det=−1)

Episodio cristallizzante (2026-05-07 07:00-08:30): TM3 propone osservatore A8
watchdog deterministico. Sistema interrogato 3 volte (Godel #1, #2, #3 +
domandatore + test empirico) — al terzo round emerge la direzione vera:
**non costruire osservatore, eseguire un cycle-test che diagnostica il sistema
da solo**. Cycle-test eseguito → verdict=operator → REDESIGN proposto dal
valutatore → loop A8+A15 sbloccato.

## How to apply (per qualsiasi agente)

1. **Esegui** un atto minimo (no design teorico astratto)
2. **Aggiusta** quello che si manifesta durante l'esecuzione (riparazione
   regressiva live, non patch posteriori)
3. **Osserva** il deposito che emerge (no immaginazione)
4. **Reitera** fino a stato OK (loop A8: il sistema converge se modus radicato)
5. **Cristallizza in automazione** SOLO dopo che è stato fatto girare e ha mostrato
   stabilità — non automatizzare prima

## Anti-pattern

- Costruire un componente strutturale (watchdog, observer, gate, governor) senza
  prima aver fatto girare un'esecuzione minima che mostri cosa serve davvero
- Decidere "perché serve velocità" o "per ottimizzare" senza interrogare il sistema
- Astrazione prematura (premature abstraction): 3 simili è meglio di 1 generalizzato
  troppo presto

## Cross-link

- TM3 memoria: `/root/.claude/projects/-opt/memory/feedback_indeterminato_reitera_con_sistema.md`
  (versione completa con episodio + metafora foresta-sentiero)
- Verifica empirica: cycle `20260507_0803` (verdict=operator, REDESIGN/high)
- Pattern A8+A15 (autologica + veicolo senza guidatore) applicato allo sviluppo
  software stesso, non solo al lab di ricerca

exec
/bin/bash -lc "sed -n '1,220p' tools/data/seme.json" in /opt/MM_D-ND
 succeeded in 0ms:
{
  "timestamp": "2026-05-15T18:21:26.561980",
  "piano": 120,
  "tensioni": [
    {
      "tipo": "confine_inesplorato",
      "id": "TRASCENDENZA_LIMITE",
      "claim": "La trascendenza e il limite attuale del modello. I punti fissi relazionali (non solo phi ma la rete di punti fissi tra osservabili) possono rivelare il vero grafo della realta e pattern nelle matrici. Il confine non e nella matematica - e nel passaggio tra piani.",
      "intensita": 0.9,
      "nota": "Input operatore 2026-04-10. Tocca: confine del modello, struttura relazionale dei punti fissi. Consecutio: quali punti fissi relazionali emergono dalle 21 tensioni attuali? Il grafo e gia nei dati?",
      "manuale": true,
      "porta": "sessione_interattiva",
      "condensato_ref": "A3,A10",
      "condensato_motivo": "Estende A3 (punto fisso singolo) a rete relazionale. Tocca A10 (dipolo) come caso speciale."
    },
    {
      "tipo": "scoperta",
      "id": "DUALITA_DIPOLARE_VS_ILLUSORIA",
      "claim": "Due tipi di dualita: (1) dipolare - generativa, il modello (det=-1), (2) illusoria - dispersiva, entropia (det=+1). Le regole incoerenti producono la seconda. La dualita illusoria e entropia come dispersione, non come informazione.",
      "intensita": 0.9,
      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
      "manuale": true,
      "porta": "sessione_interattiva",
      "condensato_ref": "A2,A10,F5",
      "condensato_motivo": "Discrimina due forme di det. A2 (confine) e la soglia. A10 (dipolo) e il tipo 1. F5 (frame) misura la struttura D-ND che e tipo 1."
    },
    {
      "tipo": "scoperta_numerica",
      "id": "METRIC_TENSOR",
      "claim": "Il tensore metrico dei primi è g=(p/2)². Nel tempo ln(p), è de Sitter 1+1D. z=-8.8 curvatura vs z=+22.5 rapporti ΔΓ.",
      "intensità": 0.9,
      "nota": "Sessione interattiva 4 aprile. Verificato su 78K primi.",
      "manuale": true,
      "porta": "sessione_interattiva",
      "condensato_ref": null,
      "condensato_motivo": "Risultato numerico verificato, non-tautologico"
    },
    {
      "tipo": "scoperta",
      "id": "TENSIONE_ENTITA",
      "claim": "La tensione non e un problema pratico - e un Entita. La tensione superflua crea latenza (tempo). Senza tensione superflua tutto e regolato da assiomi. Implicazione: le tensioni nel seme sono entita, non problemi da risolvere. Quelle superflue (det=+1) producono tempo/latenza.",
      "intensita": 0.85,
      "nota": "Input operatore 2026-04-10. Tocca: rapporto tensione/assioma. Operativamente: discriminare tensioni-entita (generative) da tensioni-superflue (dispersive) nel seme. Le 21 tensioni attuali - quante sono entita e quante latenza?",
      "manuale": true,
      "porta": "sessione_interattiva",
      "condensato_ref": "A5,A6",
      "condensato_motivo": "Il ciclo (A5) lavora con tensioni - ma se la tensione e entita, il ciclo non le risolve, le osserva. Lo zero mobile (A6) e la tensione senza latenza."
    },
    {
      "tipo": "confine_inesplorato",
      "id": "G_POTENZIALE_NULLA",
      "claim": "G e il potenziale di tutto come nulla - permette il prima e il dopo. Ci muoviamo come trascendenza dimensionale gravitazionale. G nel tetraedro non e una teoria tra le altre - e il potenziale che le rende possibili.",
      "intensita": 0.85,
      "nota": "Input operatore 2026-04-10. Tocca: ruolo di G nel tetraedro (T,Q,G,E). La fonte video_lp0RgZ6kQF8 dice: tensore metrico dentro la forma simplettica. G non e accanto a T,Q,E - e sotto. Consecutio: nei dati Lab, i ponti TxG e ExG hanno struttura diversa dai ponti TxQ?",
      "manuale": true,
      "porta": "sessione_interattiva",
      "condensato_ref": "A7,A10",
      "condensato_motivo": "A7 (singolarita come operatore) e G come potenziale. A10 (dipolo) opera sul piano che G rende possibile."
    },
    {
      "tipo": "confine_inesplorato",
      "id": "BOUNDARY",
      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
      "intensità": 0.8,
      "nota": "Il segnale non-triviale è DOVE la scissione cambia natura, non che converge a φ",
      "condensato_ref": "A9",
      "condensato_motivo": "Overlap termini con A9 (5 termini)",
      "porta": "condensato"
    },
    {
      "tipo": "scoperta",
      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
      "claim": "Transizione continua confermata: <r> da 0.521 a 0.887 (range=0.366). La transizione Sturmian->Harper e' conti",
      "intensita": 0.8,
      "nota": "Dal domandatore (2026-05-15T16:23). \n  alpha=0.1: <r>=0.540 #####################\n  alpha=0.2: <r>=0.555 ###########",
      "condensato_ref": "A3,A10",
      "condensato_motivo": "Ricorrente (3x in 2 giorni) e fuori dalla mappa",
      "porta": "domandatore",
      "source_tension_id": "TRASCENDENZA_LIMITE",
      "source_tension_tipo": "confine_inesplorato",
      "source_tension_ref": "A3,A10",
      "source_experiment_id": "BOUNDARY_TRASCENDENZA_LIMITE",
      "source_operator": "confine",
      "dettaglio": "\n  alpha=0.1: <r>=0.540 #####################\n  alpha=0.2: <r>=0.555 ######################\n  alpha=0.3: <r>=0.567 ######################\n  alpha=0.4: <r>=0.580 #######################\n  alpha=0.5: <r>=0.603 ########################\n  alpha=0.6: <r>=0.642 #########################\n  alpha=0.7: <r>=0.685 ###########################\n  alpha=0.8: <r>=0.732 #############################\n  alpha=0.9: <r>=0.789 ###############################\n  alpha=1.0: <r>=0.887 ###################################\n"
    },
    {
      "tipo": "falsificazione",
      "id": "FALS_BREAK_TRASCENDENZA_LIMITE",
      "claim": "Nessuna separazione: 9/9 (50/50 su 18 confronti). Il claim non regge. phi converge a <r>=0.5 piu' sistematicam",
      "intensita": 0.8,
      "nota": "Dal domandatore (2026-05-15T16:47). 0.5|=0.1129 farther\n\n  silver:\n    N=  13: <r>=0.5902 |<r>-0.5|=0.0902 \n    N=  ",
      "condensato_ref": "LAB_F2",
      "condensato_motivo": "Overlap termini con LAB_F2 (4 termini)",
      "porta": "condensato",
      "source_tension_id": "TRASCENDENZA_LIMITE",
      "source_tension_tipo": "confine_inesplorato",
      "source_tension_ref": "A3,A10",
      "source_experiment_id": "BREAK_TRASCENDENZA_LIMITE",
      "source_operator": "rottura",
      "dettaglio": "0.5|=0.1129 farther\n\n  silver:\n    N=  13: <r>=0.5902 |<r>-0.5|=0.0902 \n    N=  21: <r>=0.6317 |<r>-0.5|=0.1317 farther\n    N=  34: <r>=0.6442 |<r>-0.5|=0.1442 farther\n    N=  55: <r>=0.5233 |<r>-0.5|=0.0233 closer\n    N=  89: <r>=0.5502 |<r>-0.5|=0.0502 farther\n    N= 144: <r>=0.5603 |<r>-0.5|=0.0603 farther\n    N= 233: <r>=0.5446 |<r>-0.5|=0.0446 closer\n    N= 377: <r>=0.4989 |<r>-0.5|=0.0011 closer\n    N= 610: <r>=0.5480 |<r>-0.5|=0.0480 farther\n    N= 987: <r>=0.4913 |<r>-0.5|=0.0087 closer\n"
    },
    {
      "tipo": "confine_inesplorato",
      "id": "PIANO_PRIMARIO_DUE_ASSIOMI",
      "claim": "I piani importanti sono il primario e i due assiomi che lo determinano nelle zone osservate. Non tutti gli assiomi operano ovunque - in ogni zona osservata, due assiomi determinano il piano primario.",
      "intensita": 0.8,
      "nota": "Input operatore 2026-04-10. Tocca: struttura locale degli assiomi. Consecutio: per ogni dominio Lab (primi, logistica, percolazione...) quali 2 assiomi del condensato sono operativi? Mappa assiomi x domini = grafo della realta locale.",
      "manuale": true,
      "porta": "sessione_interattiva",
      "condensato_ref": "A9,A14",
      "condensato_motivo": "A9 (terzo incluso) opera CON il piano. A14 (cascata) propaga - ma propaga cosa, se solo 2 assiomi sono attivi per zona?"
    },
    {
      "tipo": "conferma_parziale",
      "id": "COMP_GEN_GAP_RATIO_T9_linguaggio_TRASCENDENZA_LIMITE",
      "claim": "gap_ratio: phi=0.4090 vs ctrl_mean=1.1755 (ratio=0.35). gap_ratio(phi) piu' vicino a rapporto in",
      "intensita": 0.65,
      "nota": "Dal domandatore (2026-05-15T16:23).   phi: gap_ratio = 0.408953425243134\n  silver: gap_ratio = 1.0482231205217798\n  ",
      "condensato_ref": "LAB_F2",
      "condensato_motivo": "Overlap termini con LAB_F2 (4 termini)",
      "porta": "condensato",
      "source_tension_id": "TRASCENDENZA_LIMITE",
      "source_tension_tipo": "confine_inesplorato",
      "source_tension_ref": "A3,A10",
      "source_experiment_id": "GEN_GAP_RATIO_T9_linguaggio_TRASCENDENZA_LIMITE",
      "source_operator": "duale",
      "dettaglio": "  phi: gap_ratio = 0.408953425243134\n  silver: gap_ratio = 1.0482231205217798\n  bronze: gap_ratio = 1.3027860752339453\n{\n  \"phi\": 0.408953425243134,\n  \"silver\": 1.0482231205217798,\n  \"bronze\": 1.3027860752339453\n}\n"
    },
    {
      "tipo": "conferma_parziale",
      "id": "COMP_DOMAIN_PHOTONIC_TRASCENDENZA_LIMITE",
      "claim": "T_mean: phi=6.2500 vs ctrl_mean=9.7667 (ratio=0.64). Fibonacci-phi trasmissione piu' struttur",
      "intensita": 0.65,
      "nota": "Dal domandatore (2026-05-15T16:47). Trasmissione multistrato Fibonacci — phi vs silver vs random:\n  phi: T_mean=6.25",
      "condensato_ref": "A3,A10",
      "condensato_motivo": "Ricorrente (5x in 2 giorni) e fuori dalla mappa",
      "porta": "domandatore",
      "source_tension_id": "TRASCENDENZA_LIMITE",
      "source_tension_tipo": "confine_inesplorato",
      "source_tension_ref": "A3,A10",
      "source_experiment_id": "DOMAIN_PHOTONIC_TRASCENDENZA_LIMITE",
      "source_operator": "dominio",
      "dettaglio": "Trasmissione multistrato Fibonacci — phi vs silver vs random:\n  phi: T_mean=6.2500 T_std=0.0000\n  silver: T_mean=0.0041 T_std=0.0000\n  random_0: T_mean=39.0625 T_std=0.0000\n  random_1: T_mean=0.0000 T_std=0.0000\n  random_2: T_mean=0.0001 T_std=0.0000\n"
    },
    {
      "tipo": "tensione_aperta",
      "id": "TENS_SCALE_TRASCENDENZA_LIMITE",
      "claim": "Fit non converge — il modello potrebbe non essere power-law. V_c(phi) converge a 1.0 per N->inf, V_c(",
      "intensita": 0.6,
      "nota": "Dal domandatore (2026-05-15T16:59). V_c scaling with N — phi vs silver:\n\n  phi:\n    N=  89: V_c=1.017\n    N= 144: V_",
      "condensato_ref": "A12",
      "condensato_motivo": "Overlap termini con A12 (3 termini)",
      "porta": "condensato",
      "source_tension_id": "TRASCENDENZA_LIMITE",
      "source_tension_tipo": "confine_inesplorato",
      "source_tension_ref": "A3,A10",
      "source_experiment_id": "SCALE_TRASCENDENZA_LIMITE",
      "source_operator": "scala",
      "dettaglio": "V_c scaling with N — phi vs silver:\n\n  phi:\n    N=  89: V_c=1.017\n    N= 144: V_c=0.672\n    N= 233: V_c=1.017\n    N= 377: V_c=0.672\n    N= 610: V_c=0.931\n    Fit failed: Optimal parameters not found: Number of calls to function has reached maxfev = 5000.\n\n  silver:\n    N=  89: V_c=1.276\n    N= 144: V_c=1.362\n    N= 233: V_c=1.276\n    N= 377: V_c=1.017\n    N= 610: V_c=1.362\n    Fit: V_inf=1.2115, a=8.1676, b=0.9851\n"
    },
    {
      "tipo": "simmetria_sospetta",
      "id": "META",
      "claim": "11/11 PASS stratificato: 4 alto rischio tautologico, 6 data-independent",
      "intensità": 0.3,
      "nota": "Stratificazione META applicata via meta_assertion_gate (cycle 1458). Non chiude — apre sotto-tensioni per gate_class.",
      "condensato_ref": "A4,A12,C2",
      "porta": "verify_assertions_META_STRATIFIED",
      "stratificato": true,
      "n_high_tautology": 4,
      "n_data_independent": 6,
      "condensato_motivo": "Ricorrente (3x in 2 giorni) e fuori dalla mappa"
    }
  ],
  "tensioni_archiviate": [
    {
      "id": "OBSERVABLE_REGISTRY",
      "tipo": "vincolo",
      "claim": "Ogni script che usa observables canonici (SR, SR2, L1, L2, triple_var) deve importare la definizione da tools/observables_registry.py. Varianti devono usare nomi distinti (SR_local_rigidity, triple_var_normalized) — niente shadowing del nome canonico. Ogni report deve dichiarare 'observables_registry: VERSION' nel header.",
      "intensita": 1.0,
      "porta": "infrastructure",
      "manuale": true,
      "condensato_ref": "A14,A8",
      "origine": "cristallizzato 06/05 dalla consecutio del cycle 20260506_0625 (autopoietico self-finding)",
      "added_at": "2026-05-06T07:03:58.213606+00:00",
      "decay_counter": 5,
      "archived_at": "2026-05-08T00:20:36.125250",
      "archived_reason": "G4 B1 apply: decay_counter=5 (vincolo non attaccato per 5 piani consecutivi)",
      "archived_from_piano": 85
    },
    {
      "id": "PERTURBATION_DENOMINATOR_GATE",
      "tipo": "vincolo",
      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
      "intensita": 0.95,
      "porta": "META_BOUNDARY",
      "manuale": true,
      "condensato_ref": "A4,A8,A14,C2",
      "origine": "cycle agent_20260506_1941: perturbation rank size curve canonical observables",
      "added_at": "2026-05-06T19:41:00+00:00",
      "decay_counter": 5,
      "archived_at": "2026-05-08T00:20:36.125262",
      "archived_reason": "G4 B1 apply: decay_counter=5 (vincolo non attaccato per 5 piani consecutivi)",
      "archived_from_piano": 85
    },
    {
      "id": "BOUNDARY_LAYER_GATE",
      "tipo": "vincolo",
      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
      "intensita": 0.93,
      "porta": "META_BOUNDARY",
      "manuale": true,
      "condensato_ref": "A4,A8,A9,A14,C2",
      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
      "added_at": "2026-05-07T03:30:00+00:00",
      "decay_counter": 5,
      "archived_at": "2026-05-08T00:20:36.125266",
      "archived_reason": "G4 B1 apply: decay_counter=5 (vincolo non attaccato per 5 piani consecutivi)",
      "archived_from_piano": 85
    },

exec
/bin/bash -lc 'python tools/dnd_scenario.py --best' in /opt/MM_D-ND
 succeeded in 165ms:
TENS_SCALE_TRASCENDENZA_LIMITE: score=0.807  — TENS_SCALE_TRASCENDENZA_LIMITE: incerto (i=0.6) — massimo potere discriminante
COMP_GEN_GAP_RATIO_T9_linguaggio_TRASCENDENZA_LIMITE: score=0.758  — COMP_GEN_GAP_RATIO_T9_linguaggio_TRASCENDENZA_LIMITE: incerto (i=0.65) — massimo potere discriminante
COMP_DOMAIN_PHOTONIC_TRASCENDENZA_LIMITE: score=0.758  — COMP_DOMAIN_PHOTONIC_TRASCENDENZA_LIMITE: incerto (i=0.65) — massimo potere discriminante

codex
La misura da fare non deve ripetere il corridoio Sturmian. Taglio sul piano suggerito dal campo: usare il boundary come nodo geometrico tra classi spettrali, confrontando domini sintetici GUE/Poisson e una zona mista con un osservabile di “curvatura” della riga di dominio.
exec
/bin/bash -lc "test -f tools/data/operator_directive.md && sed -n '1,220p' tools/data/operator_directive.md || true" in /opt/MM_D-ND
 succeeded in 0ms:
exec
/bin/bash -lc "rg --files tools | rg 'exp_|observables|boundary|gue|poisson|random|spect'" in /opt/MM_D-ND
 succeeded in 0ms:
tools/exp_boundary_gue_poisson.py
tools/exp_perturbation_rank_size_curve.py
tools/exp_prime_mobius_interval_charge_gate.py
tools/exp_mod3_scaling.py
tools/exp_two_layer_universality.py
tools/exp_dipolar_vector_scaling.py
tools/exp_duality_scale_contrast.py
tools/exp_crossover_universality.py
tools/exp_markov_psd_prediction.py
tools/exp_blank_shell_polarity_gate.py
tools/exp_alpha_stability.py
tools/exp_gap_label_ostrowski_recognizability_gate.py
tools/exp_psd_amplitude_scaling.py
tools/exp_markov_scale_function.py
tools/exp_blank_to_source_hinge.py
tools/exp_vc_generator_class_direction_audit.py
tools/exp_markov_k_direction.py
tools/exp_duality_gate_transfer.py
tools/exp_meta_tautology_test.py
tools/exp_two_channel_boundary.py
tools/exp_aubry_boundary_phase_transport_gate.py
tools/exp_vc_label_preserving_swap_gate.py
tools/exp_markov3_observable_hunt.py
tools/exp_acf_amplitude_scaling.py
tools/exp_mod3_vs_residual_ordering.py
tools/exp_quasiperiodic_vc_lattice_gate.py
tools/spectral_gap_analysis.py
tools/exp_boundary_short_denominator_extension.py
tools/exp_two_channel_decomposition.py
tools/exp_semireal_order_denominator_gate.py
tools/dnd_gue_test.py
tools/exp_logistic_cyclic_block_entropy_gate.py
tools/exp_markov_layer_recovery_audit.py
tools/exp_prime_vs_mod6_sr_boundary.py
tools/exp_markov_dipolar_decomposition.py
tools/exp_vc_unit_boundary_audit.py
tools/observables_registry.py
tools/exp_two_channel_cross_domain.py
tools/exp_prime_persistent_blank_gate.py
tools/exp_beta_crossover.py
tools/exp_geodesic_deviation_primes.py
tools/exp_gap_label_supertile_tiling_gate.py
tools/exp_blank_shell_dilation_gate.py
tools/m_spectro.py
tools/exp_dR_brody_connection.py
tools/exp_aubry_cosine_boundary_counter_gate.py
tools/exp_sturmian_denominator_alignment_gate.py
tools/exp_bridge_order_denominator_gate.py
tools/exp_quasiperiodic_grammar_scale_gate.py
tools/test_gue_poisson_boundary.py
tools/exp_gap_label_repair_audit.py
tools/exp_markov_memory_by_gue_type.py
tools/exp_crossover_phase_test.py
tools/exp_aubry_binary_grammar_surrogate_gate.py
tools/exp_brody_crossover.py
tools/gue_gap_test.py
tools/exp_poisson_convergence.py
tools/exp_two_channel_universality.py
tools/exp_brody_flow.py
tools/exp_cross_observable_consistency.py
tools/exp_gap_label_position_error_gate.py
tools/exp_boundary_blank_thin_support_audit.py
tools/exp_boundary_denominator_prescan.py
tools/exp_boundary_coherence.py
tools/exp_gap_label_set_stability.py
tools/exp_two_channel_shuffle_audit.py
tools/exp_gap_label_block_scale_gate.py
tools/exp_logistic_surrogate_contract_gate.py
tools/exp_boundary_transition_taxonomy_13rows.py
tools/exp_prime_mobius_zero_mediator_gate.py
tools/exp_quasiperiodic_vc_curve_map.py
tools/exp_boundary_mixture_gate.py
tools/exp_psd_prime_gaps.py
tools/exp_magnitude_psd_from_acf.py
tools/exp_denominator_gate_transfer_matrix.py
tools/exp_3d_boundary_layers.py
tools/exp_blank_shell_scale_law.py
tools/exp_excess_scaling.py
tools/exp_ricci_primes.py
tools/exp_tqge_underlay_gate.py
tools/exp_boundary_blank_null_audit.py
tools/exp_selective_layer_decoupling.py
tools/exp_cross_domain_dipolar_direction.py
tools/exp_acf_z6z_mechanism.py
tools/exp_observable_rank_audit.py
tools/exp_modular_algebra_depth.py
tools/exp_prime_mobius_gap_stratified_zero_gate.py
tools/exp_boundary_row_aligned_nonexact_audit.py
tools/exp_gap_label_generator_gate.py
tools/exp_desitter_unification.py
tools/exp_vc_null_regression_gate.py
tools/exp_spectral_rigidity.py
tools/exp_boundary_residual_beta_absent_audit.py
tools/exp_semireal_boundary_transfer_gate.py
tools/exp_boundary_shuffle_audit.py
tools/exp_nonphi_sturmian_fixed_reader_gate.py
tools/exp_dipolar_angle_reference.py
tools/exp_mobius_irrationality.py
tools/exp_number_variance.py
tools/exp_gap_label_substitution_grammar_gate.py
tools/exp_scale_selective_perturbation.py
tools/dnd_spectral_probe.py
tools/exp_blank_shell_stratified_gate.py
tools/exp_vc_fit_model_gate.py
tools/exp_vc_nonsturmian_label_null_gate.py
tools/exp_perturbation_dimensionality_audit.py
tools/exp_boundary_growth.py
tools/exp_acf_range_universality.py
tools/exp_dipolar_crossover.py
tools/exp_brody_calibration.py
tools/exp_metric_tensor_diagnostic.py
tools/exp_blank_shell_tqger_gate.py
tools/exp_modular_memory_spectrum.py
tools/exp_triadic_deposit_gate.py
tools/m_spectro_calibra.py
tools/exp_two_channel_psd.py
tools/exp_coherence_robustness.py
tools/exp_prime_mobius_pair_stratified_zero_gate.py
tools/exp_coherence_length.py
tools/exp_vc_fit_ready_scale_table.py
tools/exp_physical_sr_residue_bounce.py
tools/exp_ricci_desitter_0406.py
tools/data/boundary_two_axis_matrix_20260509_1532.json
tools/data/markov_memory_by_gue_type.json
tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json
tools/exp_acf_stationarity.py
tools/exp_det_drift.py
tools/exp_spectral_2d.py
tools/exp_gap_label_symbolic_grammar_gate.py
tools/exp_spectral_landscape.py
tools/exp_boundary_two_axis_matrix.py
tools/exp_logistic_counter_scope_gate.py
tools/exp_quasiperiodic_gap_ratio_denominator.py
tools/exp_prime_sr_persistent_boundary.py
tools/exp_photonic_boundary_third_included_gate.py
tools/data/photonic_boundary_third_included_gate_20260515_1734.json
tools/data/m_spectro_calibra_20260310_2015.json
tools/exp_aubry_v2_generator_scaling_gate.py
tools/data/prime_vs_mod6_sr_boundary_20260514_0330.json
tools/data/boundary_denominator_prescan_20260509_1430.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w4096.trace.jsonl
tools/data/exp_markov_psd_prediction.json
tools/data/prime_gaps_spectrum.png
tools/data/boundary_denominator_prescan_20260509_1409.json
tools/data/exp_two_channel_universality.json
tools/data/boundary_denominator_prescan_full_20260509_1500.json
tools/data/exp_det_drift.json
tools/data/modular_memory_spectrum.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w16384.trace.jsonl
tools/data/reports/fibonacci_spectrum_20260306_1834.json
tools/data/reports/exp_desitter_unification.json
tools/data/reports/exp_metric_tensor_diag_long.json
tools/data/reports/exp_dR_brody_connection.json
tools/data/reports/fibonacci_spectrum_20260305_0844.json
tools/data/reports/exp_psd_prime_gaps.json
tools/data/reports/exp_brody_crossover_20260405.json
tools/data/reports/exp_crossover_universality.json
tools/data/reports/exp_boundary_20260405_0825.json
tools/data/reports/fibonacci_spectrum_20260306_0342.json
tools/data/reports/exp_boundary_growth_20260405_0914.json
tools/data/reports/exp_excess_scaling_20260405.json
tools/data/reports/exp_ricci_primes.json
tools/data/reports/exp_number_variance_test.json
tools/data/reports/exp_geodesic_deviation_primes.json
tools/data/reports/exp_acf_decay_data.json
tools/data/reports/fibonacci_spectrum_20260305_0756.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w512.json
tools/data/boundary_mixture_gate_20260507_0330_seedcheck.json
tools/data/spectral_gap_results.json
tools/data/m_spectro_18_domains.png
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.trace.jsonl
tools/data/exp_spectral_landscape.json
tools/data/boundary_residual_beta_absent_audit_20260510_0330.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w512.trace.jsonl
tools/data/m_spectro_godel_densita_20260318_0949.json
tools/data/prime_vs_mod6_sr_boundary_20260514_0330.trace.jsonl
tools/data/m_spectro_confronto_20260310_1959.json
tools/data/prime_vs_mod6_sr_boundary_20260514_0330_seedcheck.json
tools/data/m_spectro_godel_risonanza_20260318_0949.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w8192.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w4096.json
tools/data/boundary_blank_thin_support_audit_20260509_1548.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.trace.jsonl
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.json
tools/data/exp_psd_amp_scaling.json
tools/data/exp_two_channel_decomposition.json
tools/data/exp_acf_z6z_mechanism.json
tools/data/3d_boundary_layers.json
tools/data/piano11b_gue_test.json
tools/data/exp_acf_range_universality.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.trace.jsonl
tools/data/exp_poisson_convergence.json
tools/data/boundary_shuffle_audit.json
tools/data/physical_sr_residue_bounce_20260514_1640_goe_gue_ncurve.trace.jsonl
tools/data/boundary_blank_null_audit_residual_20260509_1500.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json
tools/data/prime_gaps_spectrum_pub.png
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json
tools/data/boundary_coherence.json
tools/data/boundary_mixture_gate_20260507_0330.json
tools/data/prime_vs_mod6_sr_boundary_20260514_0330_seedcheck.trace.jsonl
tools/data/m_spectro_9_domains.png
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json
tools/data/boundary_transition_taxonomy_13rows_20260509_1839.json
tools/data/exp_coherence_length.json
tools/data/exp_spectral_2d.json
tools/data/vc_unit_boundary_audit_20260509_1457.json
tools/data/m_spectro_godel_attrito_20260318_0949.json
tools/data/prime_vs_mod6_sr_boundary_20260513_0330_seedcheck.json
tools/data/physical_sr_residue_bounce_20260514_1640_goe_gue_ncurve.json
tools/data/exp_det_drift_20260507_2042.json
tools/data/m_spectro_11domini.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w8192.trace.jsonl
tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w16384.json
tools/data/exp_acf_stationarity.json
tools/data/spectral_rigidity_results.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w8192_dense.trace.jsonl
tools/data/two_channel_boundary.json
tools/data/exp_conditional_r.json
tools/data/boundary_short_denominator_extension_20260509_1556.json
tools/data/tm1_figures/m_spectro_18_domains.png
tools/data/tm1_figures/prime_gaps_spectrum_pub.png
tools/data/prime_sr_persistent_boundary_20260512_0330.json
tools/data/semireal_boundary_transfer_gate_20260509_1516.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w8192_dense.json
tools/data/boundary_blank_null_audit_20260509_1430.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.trace.jsonl
tools/data/exp_two_channel_psd.json
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.json
tools/data/exp_beta_crossover.json
tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json

exec
/bin/bash -lc 'ls -lt tools/data/reports | head -20' in /opt/MM_D-ND
 succeeded in 0ms:
total 52548
-rw-r--r-- 1 root root   72608 May 15 18:55 agent_20260515_1855_codex_raw.log
-rw-r--r-- 1 root root     995 May 15 18:37 quarantine_manifest.json
-rw-r--r-- 1 root root     451 May 15 18:31 loop_guard_20260515_1826.json
-rw-r--r-- 1 root root    1313 May 15 18:29 falsifier_20260515_1826.json
-rw-r--r-- 1 root root  324542 May 15 18:29 agent_20260515_1826_codex_raw.log
-rw-r--r-- 1 root root    8571 May 15 18:29 agent_20260515_1826.md
-rw-r--r-- 1 root root     459 May 15 18:21 loop_guard_20260515_1816.json
lrwxrwxrwx 1 root root      22 May 15 18:21 latest.md -> agent_20260515_1816.md
-rw-r--r-- 1 root root     354 May 15 18:20 falsifier_20260515_1816.json
-rw-r--r-- 1 root root  381452 May 15 18:20 agent_20260515_1816_codex_raw.log
-rw-r--r-- 1 root root    9123 May 15 18:20 agent_20260515_1816.md
-rw-r--r-- 1 root root     459 May 15 18:13 loop_guard_20260515_1807.json
-rw-r--r-- 1 root root    1855 May 15 18:11 falsifier_20260515_1807.json
-rw-r--r-- 1 root root  457124 May 15 18:11 agent_20260515_1807_codex_raw.log
-rw-r--r-- 1 root root    9227 May 15 18:11 agent_20260515_1807.md
-rw-r--r-- 1 root root     459 May 15 18:03 loop_guard_20260515_1758.json
-rw-r--r-- 1 root root    1590 May 15 18:02 falsifier_20260515_1758.json
-rw-r--r-- 1 root root  295311 May 15 18:01 agent_20260515_1758_codex_raw.log
-rw-r--r-- 1 root root    9856 May 15 18:01 agent_20260515_1758.md

exec
/bin/bash -lc "rg -n \"8 domini|GUE|Poisson|boundary|BOUNDARY|domain\" tools/exp_*.py tools/data/reports tools/data -g '"'!*.jsonl'"'" in /opt/MM_D-ND
 succeeded in 1ms:
tools/exp_3d_boundary_layers.py:3:exp_3d_boundary_layers.py — Does the boundary have 3D structure?
tools/exp_3d_boundary_layers.py:11:If same α_c → the boundary is 2D (Layer 2 follows Layer 1 = partial tautology)
tools/exp_3d_boundary_layers.py:12:If different α_c → the boundary has genuine 3D depth (two independent transitions)
tools/exp_3d_boundary_layers.py:14:Tests on: primes, GUE, Poisson baseline.
tools/exp_3d_boundary_layers.py:17:    python tools/exp_3d_boundary_layers.py [--N 50000] [--n_alpha 20] [--n_trials 30]
tools/exp_3d_boundary_layers.py:37:    """Generate GUE eigenvalue gaps."""
tools/exp_3d_boundary_layers.py:179:    # --- GUE ---
tools/exp_3d_boundary_layers.py:180:    print("\n--- GUE ---")
tools/exp_3d_boundary_layers.py:187:        gue_g, alphas, args.n_trials, rng, "GUE"
tools/exp_3d_boundary_layers.py:190:    # --- Poisson (exponential gaps, iid) ---
tools/exp_3d_boundary_layers.py:194:        poisson_gaps, alphas, args.n_trials, rng, "Poisson"
tools/exp_3d_boundary_layers.py:255:    print(f"Layer separation Δα: Primes={prime_sep:+.3f}, GUE={gue_sep:+.3f}, Poisson={pois_sep:+.3f}")
tools/exp_3d_boundary_layers.py:264:    out_path = Path(__file__).parent / 'data' / '3d_boundary_layers.json'
tools/exp_aubry_cosine_boundary_counter_gate.py:3:Aubry-Andre cosine counter-gate for the BOUNDARY return.
tools/exp_aubry_cosine_boundary_counter_gate.py:6:the binary Sturmian grammar and ask whether phi remains a privileged boundary
tools/exp_aubry_cosine_boundary_counter_gate.py:88:    domain: str,
tools/exp_aubry_cosine_boundary_counter_gate.py:98:        "domain": domain,
tools/exp_aubry_cosine_boundary_counter_gate.py:131:def median_metric(summary: dict[str, Any], domain: str, v_key: str, metric: str) -> float | None:
tools/exp_aubry_cosine_boundary_counter_gate.py:132:    value = summary.get(v_key, {}).get(domain, {}).get(metric, {})
tools/exp_aubry_cosine_boundary_counter_gate.py:156:    irrational_domains = {
tools/exp_aubry_cosine_boundary_counter_gate.py:166:                for domain, beta in irrational_domains.items():
tools/exp_aubry_cosine_boundary_counter_gate.py:169:                            domain,
tools/exp_aubry_cosine_boundary_counter_gate.py:200:    domains = sorted({row["domain"] for row in rows})
tools/exp_aubry_cosine_boundary_counter_gate.py:205:        for domain in domains:
tools/exp_aubry_cosine_boundary_counter_gate.py:206:            subset = [row for row in rows if row["domain"] == domain and abs(row["V"] - v_value) < 1e-12]
tools/exp_aubry_cosine_boundary_counter_gate.py:207:            summary_by_v[v_key][domain] = aggregate(subset)
tools/exp_aubry_cosine_boundary_counter_gate.py:209:    classification: dict[str, Any] = {"phi_joint_boundary_v": [], "phi_distinct_v": [], "by_v": {}}
tools/exp_aubry_cosine_boundary_counter_gate.py:254:            "phi_joint_boundary": joint,
tools/exp_aubry_cosine_boundary_counter_gate.py:257:            classification["phi_joint_boundary_v"].append(float(v_value))
tools/exp_aubry_cosine_boundary_counter_gate.py:262:        "experiment": "aubry_cosine_boundary_counter_gate",
tools/exp_aubry_cosine_boundary_counter_gate.py:272:    parser.add_argument("--out", default="tools/data/aubry_cosine_boundary_counter_gate.json")
tools/exp_acf_amplitude_scaling.py:5:Connects: ACF_1K_LAW (A~0.037 overall) + POISSON_CONVERGENCE (p*~10^14) + BOUNDARY (drift)
tools/exp_acf_amplitude_scaling.py:8:at what p* does the anti-correlation vanish (Poisson)?
tools/exp_acf_amplitude_scaling.py:127:        print(f"\nPoisson crossover (A=0): ln(p*) = {ln_p_star:.1f}, p* ~ 10^{log10_p_star:.1f}")
tools/exp_acf_amplitude_scaling.py:129:        print(f"\nSlope is non-negative ({slope:.6f}) — no Poisson crossover predicted")
tools/exp_alpha_stability.py:5:or drifts during the Poisson crossover.
tools/exp_boundary_denominator_prescan.py:3:exp_boundary_denominator_prescan.py
tools/exp_boundary_denominator_prescan.py:6:V_c. The unit under test is not the GUE/Poisson label. The unit is the
tools/exp_boundary_denominator_prescan.py:7:domain/window row before a structural claim is allowed to use its observable.
tools/exp_boundary_denominator_prescan.py:10:- tools/data/autoricerca_journal.json: base 13-domain GUE/Poisson perimeter.
tools/exp_boundary_denominator_prescan.py:11:- tools/data/boundary_shuffle_audit.json: available shuffle/null support.
tools/exp_boundary_denominator_prescan.py:14:- one row per base domain/window with source type, denominator_state,
tools/exp_boundary_denominator_prescan.py:59:    if spacing == "GUE-like":
tools/exp_boundary_denominator_prescan.py:60:        return "GUE"
tools/exp_boundary_denominator_prescan.py:61:    if spacing == "Poisson-like":
tools/exp_boundary_denominator_prescan.py:62:        return "Poisson"
tools/exp_boundary_denominator_prescan.py:79:        "GUE-like",
tools/exp_boundary_denominator_prescan.py:80:        "Poisson-like",
tools/exp_boundary_denominator_prescan.py:106:    null_domains = shuffle_audit.get("domains", {})
tools/exp_boundary_denominator_prescan.py:110:        domain = row.get("dominio", "")
tools/exp_boundary_denominator_prescan.py:111:        null_key = DEFAULT_DOMAIN_KEY.get(domain, domain)
tools/exp_boundary_denominator_prescan.py:112:        null_row = null_domains.get(null_key)
tools/exp_boundary_denominator_prescan.py:116:                "domain_window": f"{domain}:cycle_{int(row['ciclo'])}",
tools/exp_boundary_denominator_prescan.py:117:                "domain": domain,
tools/exp_boundary_denominator_prescan.py:119:                "source_domain_type": source_type(row.get("spacing")),
tools/exp_boundary_denominator_prescan.py:132:                    "domain_key": null_key if null_row else None,
tools/exp_boundary_denominator_prescan.py:147:        "domains": dict(shuffle_audit.get("domains", {})),
tools/exp_boundary_denominator_prescan.py:155:        domains = data.get("domains", {}) if isinstance(data, dict) else {}
tools/exp_boundary_denominator_prescan.py:156:        for domain, row in domains.items():
tools/exp_boundary_denominator_prescan.py:159:            merged["domains"][domain] = row
tools/exp_boundary_denominator_prescan.py:173:        by_type[row["source_domain_type"]] = by_type.get(row["source_domain_type"], 0) + 1
tools/exp_boundary_denominator_prescan.py:178:        "by_source_domain_type": by_type,
tools/exp_boundary_denominator_prescan.py:180:            row["domain_window"] for row in rows if row["transfer"] == "transfers"
tools/exp_boundary_denominator_prescan.py:182:        "blank_scope": [row["domain_window"] for row in rows if row["transfer"] == "blank"],
tools/exp_boundary_denominator_prescan.py:183:        "falls_scope": [row["domain_window"] for row in rows if row["transfer"] == "falls"],
tools/exp_boundary_denominator_prescan.py:194:        "experiment": "boundary_denominator_prescan",
tools/exp_boundary_denominator_prescan.py:195:        "question": "Does denominator_state transfer beyond V_c on the 8 GUE / 5 Poisson boundary perimeter?",
tools/exp_boundary_denominator_prescan.py:196:        "perimeter": "base autoricerca cycles 1..13: 8 GUE-like, 5 Poisson-like",
tools/exp_boundary_denominator_prescan.py:200:            "operator": "row-aligned domain/window prescan",
tools/exp_boundary_denominator_prescan.py:201:            "null": "boundary_shuffle_audit shuffle r-statistic when present",
tools/exp_boundary_denominator_prescan.py:220:            f"{row['domain_window']}\t{row['source_domain_type']}\t"
tools/exp_boundary_denominator_prescan.py:230:    parser.add_argument("--shuffle-audit", default="tools/data/boundary_shuffle_audit.json")
tools/exp_boundary_denominator_prescan.py:232:    parser.add_argument("--out", default="tools/data/boundary_denominator_prescan_20260509_1409.json")
tools/exp_aubry_v2_generator_scaling_gate.py:3:V=2 generator scaling gate for the Aubry/Sturmian boundary.
tools/exp_aubry_v2_generator_scaling_gate.py:101:    domain: str,
tools/exp_aubry_v2_generator_scaling_gate.py:111:        "domain": domain,
tools/exp_aubry_v2_generator_scaling_gate.py:144:def median_by_n(rows: list[dict[str, Any]], domain: str, metric: str) -> dict[int, float]:
tools/exp_aubry_v2_generator_scaling_gate.py:146:    ns = sorted({int(row["N"]) for row in rows if row["domain"] == domain})
tools/exp_aubry_v2_generator_scaling_gate.py:148:        arr = finite([row.get(metric) for row in rows if row["domain"] == domain and int(row["N"]) == n])
tools/exp_aubry_v2_generator_scaling_gate.py:231:    domains = sorted({row["domain"] for row in rows})
tools/exp_aubry_v2_generator_scaling_gate.py:232:    summary_by_domain = {domain: aggregate([row for row in rows if row["domain"] == domain]) for domain in domains}
tools/exp_aubry_v2_generator_scaling_gate.py:234:    for domain in domains:
tools/exp_aubry_v2_generator_scaling_gate.py:235:        scaling[domain] = {
tools/exp_aubry_v2_generator_scaling_gate.py:236:            "mean_pr_tau": log_slope(median_by_n(rows, domain, "mean_pr")),
tools/exp_aubry_v2_generator_scaling_gate.py:237:            "mean_ipr_tau": log_slope(median_by_n(rows, domain, "mean_ipr")),
tools/exp_aubry_v2_generator_scaling_gate.py:238:            "spacing_r_by_n": median_by_n(rows, domain, "spacing_r"),
tools/exp_aubry_v2_generator_scaling_gate.py:274:            "claim": "at V=2 the boundary is a generator property only if binary Sturmian, cosine, and null controls carry different participation scaling",
tools/exp_aubry_v2_generator_scaling_gate.py:278:            "non_possible": "claiming phi-specific boundary if the V=2 tau is shared by density shuffle or by non-phi Sturmian controls",
tools/exp_aubry_v2_generator_scaling_gate.py:281:        "summary_by_domain": summary_by_domain,
tools/exp_boundary_residual_beta_absent_audit.py:3:Targeted audit for the two medium/strong beta-absent BOUNDARY residues.
tools/exp_boundary_residual_beta_absent_audit.py:8:BOUNDARY reports.
tools/exp_boundary_residual_beta_absent_audit.py:20:from exp_boundary_short_denominator_extension import gue_spacing_blocks
tools/exp_boundary_residual_beta_absent_audit.py:21:from exp_semireal_boundary_transfer_gate import row_spacings
tools/exp_boundary_residual_beta_absent_audit.py:75:            "domain": "numeri_primi",
tools/exp_boundary_residual_beta_absent_audit.py:81:            "domain": "random_matrix",
tools/exp_boundary_residual_beta_absent_audit.py:170:        "experiment": "boundary_residual_beta_absent_audit",
tools/exp_boundary_residual_beta_absent_audit.py:171:        "question": "Are the two medium/strong beta-absent BOUNDARY residues the same operator, distinct classes, or atlas artifacts?",
tools/exp_boundary_residual_beta_absent_audit.py:186:            "denominator": "two open BOUNDARY rows; full row plus row-local 1024-gap windows",
tools/exp_boundary_residual_beta_absent_audit.py:188:            "not_tested": "global beta grid, V_c, source GUE/Poisson label validity",
tools/exp_boundary_residual_beta_absent_audit.py:235:    parser.add_argument("--out", default="tools/data/boundary_residual_beta_absent_audit_20260510_0330.json")
tools/exp_blank_shell_scale_law.py:29:    ("U", "boundary_link"),
tools/exp_boundary_transition_taxonomy_13rows.py:3:Scale the post-extension BOUNDARY transition taxonomy to all 13 rows.
tools/exp_boundary_transition_taxonomy_13rows.py:31:    return {row["domain_window"]: row for row in data.get("rows", [])}
tools/exp_boundary_transition_taxonomy_13rows.py:137:            "source_domain_type_audit_only": pres.get("source_domain_type"),
tools/exp_boundary_transition_taxonomy_13rows.py:153:        "experiment": "boundary_transition_taxonomy_13rows",
tools/exp_boundary_transition_taxonomy_13rows.py:154:        "question": "Does the post-extension transition taxonomy scale to all 13 BOUNDARY rows without leaving autonomous thin blanks?",
tools/exp_boundary_transition_taxonomy_13rows.py:178:            "denominator": "13 semi-real BOUNDARY rows",
tools/exp_boundary_transition_taxonomy_13rows.py:180:            "not_tested": "new beta grid, new null surrogates, V_c fit, source GUE/Poisson label validity",
tools/exp_boundary_transition_taxonomy_13rows.py:182:        "label_policy": "source_domain_type is audit metadata only and is not used in transition_class.",
tools/exp_boundary_transition_taxonomy_13rows.py:205:    parser.add_argument("--two-axis", default="tools/data/boundary_two_axis_matrix_20260509_1532.json")
tools/exp_boundary_transition_taxonomy_13rows.py:206:    parser.add_argument("--row-audit", default="tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json")
tools/exp_boundary_transition_taxonomy_13rows.py:207:    parser.add_argument("--extension", default="tools/data/boundary_short_denominator_extension_20260509_1556.json")
tools/exp_boundary_transition_taxonomy_13rows.py:208:    parser.add_argument("--prescan", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
tools/exp_boundary_transition_taxonomy_13rows.py:209:    parser.add_argument("--out", default="tools/data/boundary_transition_taxonomy_13rows_20260509_1839.json")
tools/exp_boundary_blank_null_audit.py:3:exp_boundary_blank_null_audit.py
tools/exp_boundary_blank_null_audit.py:5:Targeted null/surrogate audit for BOUNDARY prescan blank rows.
tools/exp_boundary_blank_null_audit.py:7:The global boundary shuffle audit is a historical deposit. This tool does not
tools/exp_boundary_blank_null_audit.py:9:domains so the denominator prescan can decide whether blank -> transfers,
tools/exp_boundary_blank_null_audit.py:27:R_GUE = 0.5307
tools/exp_boundary_blank_null_audit.py:66:    return "GUE" if abs(value - R_GUE) < abs(value - R_POISSON) else "Poisson"
tools/exp_boundary_blank_null_audit.py:69:def generate_domain_signal(domain: str) -> tuple[np.ndarray, dict[str, Any]]:
tools/exp_boundary_blank_null_audit.py:70:    if "_var_" not in domain:
tools/exp_boundary_blank_null_audit.py:71:        return genera_segnale(domain)
tools/exp_boundary_blank_null_audit.py:73:    base, raw_value = domain.rsplit("_var_", 1)
tools/exp_boundary_blank_null_audit.py:90:    metadata = {**metadata, "dominio": domain, "variant_base": base, "variant_value": value}
tools/exp_boundary_blank_null_audit.py:94:def audit_domain(domain: str, n_shuffle: int, rng: np.random.Generator) -> dict[str, Any]:
tools/exp_boundary_blank_null_audit.py:95:    signal, metadata = generate_domain_signal(domain)
tools/exp_boundary_blank_null_audit.py:107:            "domain": domain,
tools/exp_boundary_blank_null_audit.py:119:        "domain": domain,
tools/exp_boundary_blank_null_audit.py:140:    domains = args.domains or list(DEFAULT_DOMAINS)
tools/exp_boundary_blank_null_audit.py:142:        domain: audit_domain(domain, args.n_shuffle, rng)
tools/exp_boundary_blank_null_audit.py:143:        for domain in domains
tools/exp_boundary_blank_null_audit.py:146:        "experiment": "boundary_blank_null_audit",
tools/exp_boundary_blank_null_audit.py:151:            "R_GUE": R_GUE,
tools/exp_boundary_blank_null_audit.py:152:            "R_Poisson": R_POISSON,
tools/exp_boundary_blank_null_audit.py:154:        "domains": results,
tools/exp_boundary_blank_null_audit.py:156:            "domains": domains,
tools/exp_boundary_blank_null_audit.py:158:                domain for domain, row in results.items()
tools/exp_boundary_blank_null_audit.py:162:                domain for domain, row in results.items()
tools/exp_boundary_blank_null_audit.py:173:    for domain, row in results.items():
tools/exp_boundary_blank_null_audit.py:175:            print(f"{domain}\tERROR\t{row['error']}")
tools/exp_boundary_blank_null_audit.py:178:            f"{domain}\tn={row['n_gaps']}\tr={row['r_original']:.6f}\t"
tools/exp_boundary_blank_null_audit.py:187:    parser.add_argument("--domains", nargs="*", default=list(DEFAULT_DOMAINS))
tools/exp_boundary_blank_null_audit.py:190:    parser.add_argument("--out", default="tools/data/boundary_blank_null_audit_20260509.json")
tools/exp_brody_crossover.py:6:crossover from GUE-like to Poisson-like? What is the functional form?
tools/exp_brody_crossover.py:11:  where beta=0 is Poisson, beta=1 is GOE (Wigner)
tools/exp_brody_crossover.py:165:    print(f"Poisson: beta=0, GOE: beta=1")
tools/exp_brody_crossover.py:175:    # Key test: extrapolate where beta_prime would reach 0 (Poisson)
tools/exp_brody_crossover.py:178:        print(f"\nExtrapolated Poisson (beta=0) at ln(p) = {ln_p_poisson:.1f} → p ~ 10^{ln_p_poisson/np.log(10):.0f}")
tools/exp_brody_crossover.py:180:        print(f"\nbeta INCREASES with scale — primes move AWAY from Poisson")
tools/exp_brody_crossover.py:189:        "tension_id": "BOUNDARY+METRIC_TENSOR",
tools/exp_boundary_growth.py:5:Tension: BOUNDARY (0.7)
tools/exp_boundary_growth.py:13:  - GUE (correlated): <r> ~ 0.5307
tools/exp_boundary_growth.py:14:  - Poisson (uncorrelated): <r> ~ 0.3863
tools/exp_boundary_growth.py:53:    print("BOUNDARY EXCESS GROWTH EXPERIMENT")
tools/exp_boundary_growth.py:158:    # Key question: do primes approach GUE or Poisson at large scale?
tools/exp_boundary_growth.py:159:    GUE_R = 0.5307
tools/exp_boundary_growth.py:165:    print(f"GUE reference: {GUE_R}")
tools/exp_boundary_growth.py:166:    print(f"Poisson reference: {POISSON_R}")
tools/exp_boundary_growth.py:167:    print(f"Position: {'closer to GUE' if abs(r_large - GUE_R) < abs(r_large - POISSON_R) else 'closer to Poisson'}")
tools/exp_boundary_growth.py:206:        "experiment": "boundary_excess_growth",
tools/exp_boundary_growth.py:207:        "tension_id": "BOUNDARY",
tools/exp_boundary_growth.py:229:    out_path = "/opt/MM_D-ND/tools/data/reports/exp_boundary_growth_20260405_0914.json"
tools/exp_cross_domain_dipolar_direction.py:3:exp_cross_domain_dipolar_direction.py — Is the dipolar direction a universality-class
tools/exp_cross_domain_dipolar_direction.py:4:property or domain-specific?
tools/exp_cross_domain_dipolar_direction.py:6:Primes have theta=-111 deg in the (SR, L1) plane. GUE has theta=-97 deg.
tools/exp_cross_domain_dipolar_direction.py:7:Do all GUE-like domains share -97, or does each have its own direction?
tools/exp_cross_domain_dipolar_direction.py:8:Do all Poisson-like domains lack direction?
tools/exp_cross_domain_dipolar_direction.py:10:Tests 8 domains:
tools/exp_cross_domain_dipolar_direction.py:11:  GUE-like: GUE spacings, GOE spacings, CUE spacings, Riemann zeta zeros (via GUE proxy)
tools/exp_cross_domain_dipolar_direction.py:12:  Poisson-like: exponential iid, uniform iid, geometric iid
tools/exp_cross_domain_dipolar_direction.py:16:Map all domains in the angle-magnitude plane.
tools/exp_cross_domain_dipolar_direction.py:19:    python tools/exp_cross_domain_dipolar_direction.py [--N 50000] [--n_trials 20]
tools/exp_cross_domain_dipolar_direction.py:81:def gen_rmt_spacings(N_mat, ensemble='GUE', rng=None):
tools/exp_cross_domain_dipolar_direction.py:85:    if ensemble == 'GUE':
tools/exp_cross_domain_dipolar_direction.py:133:    """Poisson process: exponential iid spacings."""
tools/exp_cross_domain_dipolar_direction.py:157:    print("Is the dipolar angle a universality-class property or domain-specific?")
tools/exp_cross_domain_dipolar_direction.py:171:    domains = {}
tools/exp_cross_domain_dipolar_direction.py:172:    domains['primes'] = {'class': 'unique', 'single': prime_dv}
tools/exp_cross_domain_dipolar_direction.py:177:    for ens_name in ['GUE', 'GOE', 'CUE']:
tools/exp_cross_domain_dipolar_direction.py:200:        domains[ens_name] = {
tools/exp_cross_domain_dipolar_direction.py:221:    domains['logistic_r4'] = {
tools/exp_cross_domain_dipolar_direction.py:229:    # === 6-8. Poisson-like domains ===
tools/exp_cross_domain_dipolar_direction.py:233:        print(f"\n--- {name.upper()} (iid, Poisson-class) ---")
tools/exp_cross_domain_dipolar_direction.py:245:        domains[name] = {
tools/exp_cross_domain_dipolar_direction.py:246:            'class': 'Poisson',
tools/exp_cross_domain_dipolar_direction.py:260:    for name, d in domains.items():
tools/exp_cross_domain_dipolar_direction.py:275:    rmt_names = ['GUE', 'GOE', 'CUE']
tools/exp_cross_domain_dipolar_direction.py:282:            da = domains[a]['theta_mean']
tools/exp_cross_domain_dipolar_direction.py:283:            db = domains[b]['theta_mean']
tools/exp_cross_domain_dipolar_direction.py:288:            ua = domains[a]['theta_std']
tools/exp_cross_domain_dipolar_direction.py:289:            ub = domains[b]['theta_std']
tools/exp_cross_domain_dipolar_direction.py:296:        sep = prime_theta - domains[name]['theta_mean']
tools/exp_cross_domain_dipolar_direction.py:299:        z = abs(sep) / max(domains[name]['theta_std'], 0.1)
tools/exp_cross_domain_dipolar_direction.py:306:        print(f"    {name}:  {domains[name]['mag_mean']:.4f}")
tools/exp_cross_domain_dipolar_direction.py:309:        print(f"    {name}:  {domains[name]['mag_mean']:.6f}")
tools/exp_cross_domain_dipolar_direction.py:311:    # Poisson direction scatter
tools/exp_cross_domain_dipolar_direction.py:312:    print("\n  Poisson direction scatter (std of theta):")
tools/exp_cross_domain_dipolar_direction.py:314:        print(f"    {name}: std = {domains[name]['theta_std']:.1f} deg")
tools/exp_cross_domain_dipolar_direction.py:318:        'domains': domains,
tools/exp_cross_domain_dipolar_direction.py:325:    out_path = Path(__file__).parent / "data" / "cross_domain_dipolar_direction.json"
tools/exp_cross_domain_dipolar_direction.py:335:                        help='Target number of spacings per domain')
tools/exp_cross_domain_dipolar_direction.py:337:                        help='Number of independent trials per domain')
tools/exp_boundary_row_aligned_nonexact_audit.py:3:Audit BOUNDARY rows where support transfers but beta 0.3 is not exact.
tools/exp_boundary_row_aligned_nonexact_audit.py:6:does not read GUE/Poisson labels as decision fields. It only uses support,
tools/exp_boundary_row_aligned_nonexact_audit.py:27:def row_key(domain: str, cycle: int) -> str:
tools/exp_boundary_row_aligned_nonexact_audit.py:28:    return f"{domain}:cycle_{cycle}"
tools/exp_boundary_row_aligned_nonexact_audit.py:34:        key = row_key(row["domain"], row["cycle"])
tools/exp_boundary_row_aligned_nonexact_audit.py:46:            "domain_window": row.get("domain_window"),
tools/exp_boundary_row_aligned_nonexact_audit.py:155:        "experiment": "boundary_row_aligned_nonexact_audit",
tools/exp_boundary_row_aligned_nonexact_audit.py:159:        "prescan_source": "boundary_denominator_prescan_full_20260509_1500",
tools/exp_boundary_row_aligned_nonexact_audit.py:175:        "label_policy": "Does not use source_domain_type or GUE/Poisson label as an operator.",
tools/exp_boundary_row_aligned_nonexact_audit.py:205:    parser.add_argument("--matrix", default="tools/data/boundary_two_axis_matrix_20260509_1532.json")
tools/exp_boundary_row_aligned_nonexact_audit.py:206:    parser.add_argument("--prescan", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
tools/exp_boundary_row_aligned_nonexact_audit.py:207:    parser.add_argument("--out", default="tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json")
tools/exp_dR_brody_connection.py:58:    beta=0 -> Poisson, beta=1 -> Wigner (GOE).
tools/exp_boundary_two_axis_matrix.py:3:Build the two-axis BOUNDARY matrix requested by the 1532 cycle.
tools/exp_boundary_two_axis_matrix.py:5:Input is a row-aligned semi-real boundary gate deposit. The operator deliberately
tools/exp_boundary_two_axis_matrix.py:6:does not use GUE/Poisson source labels: it only reads transfer support and beta
tools/exp_boundary_two_axis_matrix.py:106:        "experiment": "boundary_two_axis_matrix",
tools/exp_boundary_two_axis_matrix.py:107:        "question": "Separate support_transfer from beta_coordinate_transfer on the 13 semi-real BOUNDARY rows without using GUE/Poisson labels.",
tools/exp_boundary_two_axis_matrix.py:120:        "label_policy": "GUE/Poisson source labels are not read by this operator.",
tools/exp_boundary_two_axis_matrix.py:133:    parser.add_argument("--input", default="tools/data/semireal_boundary_transfer_gate_20260509_1516.json")
tools/exp_boundary_two_axis_matrix.py:134:    parser.add_argument("--out", default="tools/data/boundary_two_axis_matrix_20260509_1532.json")
tools/exp_brody_flow.py:5:Measures how the Brody beta (interpolating Poisson beta=0 to GUE beta=1)
tools/exp_dipolar_angle_reference.py:3:exp_dipolar_angle_reference.py — Dipolar angle of GUE, Poisson, and primes
tools/exp_dipolar_angle_reference.py:6:1. Pure GUE eigenvalue spacings (GOE/GUE unfolded)
tools/exp_dipolar_angle_reference.py:7:2. Pure Poisson (exponential iid)
tools/exp_dipolar_angle_reference.py:13:unique or just a position on the GUE-Poisson continuum?
tools/exp_dipolar_angle_reference.py:80:    """Generate gaps from GUE eigenvalues (unfolded)."""
tools/exp_dipolar_angle_reference.py:83:        # GUE: complex Hermitian random matrix
tools/exp_dipolar_angle_reference.py:116:    """Generate iid exponential gaps (Poisson process)."""
tools/exp_dipolar_angle_reference.py:153:    # 2. GUE
tools/exp_dipolar_angle_reference.py:154:    print(f"Generating GUE gaps (n_trials={n_trials})...")
tools/exp_dipolar_angle_reference.py:163:            print(f"  GUE trial {t+1}/{n_trials}: theta = {theta:.1f}")
tools/exp_dipolar_angle_reference.py:165:    results['GUE'] = {
tools/exp_dipolar_angle_reference.py:171:    print(f"  GUE: theta = {np.mean(gue_thetas):.1f} +/- {np.std(gue_thetas):.1f} deg")
tools/exp_dipolar_angle_reference.py:193:    # 4. Poisson
tools/exp_dipolar_angle_reference.py:194:    print(f"Generating Poisson gaps (n_trials={n_trials})...")
tools/exp_dipolar_angle_reference.py:203:            print(f"  Poisson trial {t+1}/{n_trials}: theta = {theta:.1f}")
tools/exp_dipolar_angle_reference.py:205:    results['Poisson'] = {
tools/exp_dipolar_angle_reference.py:211:    print(f"  Poisson: theta = {np.mean(poi_thetas):.1f} +/- {np.std(poi_thetas):.1f} deg")
tools/exp_dipolar_angle_reference.py:240:    print(f"{'GUE':<12} {results['GUE']['theta_mean']:>7.1f} +/- {results['GUE']['theta_std']:>5.1f}  {results['GUE']['SR_mean']:<10.4f} {results['GUE']['L1_mean']:<10.4f}")
tools/exp_dipolar_angle_reference.py:242:    print(f"{'Poisson':<12} {results['Poisson']['theta_mean']:>7.1f} +/- {results['Poisson']['theta_std']:>5.1f}  {results['Poisson']['SR_mean']:<10.4f} {results['Poisson']['L1_mean']:<10.4f}")
tools/exp_dipolar_angle_reference.py:247:    for name in ['GUE', 'GOE', 'Poisson', 'Cramer']:
tools/exp_cross_observable_consistency.py:17:5. GUE control: synthetic GUE eigenvalues (should show β_r ≈ β_Σ ≈ 1)
tools/exp_cross_observable_consistency.py:21:  contributes more at large scales, pulling Σ² toward Poisson faster
tools/exp_cross_observable_consistency.py:107:# ── GUE control (small ensemble) ────────────────────────────────────
tools/exp_cross_observable_consistency.py:109:    """Generate GUE eigenvalue gaps."""
tools/exp_cross_observable_consistency.py:115:        # Unfold: for GUE bulk, spacing ~ semicircle
tools/exp_cross_observable_consistency.py:169:# ── Measure GUE (positive control) ──────────────────────────────────
tools/exp_cross_observable_consistency.py:170:print("\n=== GUE (positive control) ===")
tools/exp_cross_observable_consistency.py:176:# For GUE, unfold eigenvalues directly
tools/exp_cross_observable_consistency.py:215:# GUE
tools/exp_cross_observable_consistency.py:217:print(f"{'GUE':<12} {beta_r_gue:>6.3f} | " + " | ".join(f"{v:>9}" for v in vals_gue))
tools/exp_cross_observable_consistency.py:227:print(f"  GUE:     {disagree_gue:.3f}")
tools/exp_cross_observable_consistency.py:232:print(f"  (positive = more GUE-like at short range, more Poisson-like at long range)")
tools/exp_duality_scale_contrast.py:5:for prime gaps, GUE eigenvalue spacings, and Poisson gaps.
tools/exp_duality_scale_contrast.py:7:Tension: DUALITA_DIPOLARE_VS_ILLUSORIA + BOUNDARY
tools/exp_duality_scale_contrast.py:43:    """Generate GUE (beta=2) eigenvalue spacings from random Hermitian matrix."""
tools/exp_duality_scale_contrast.py:59:    """Generate Poisson (uncorrelated) spacings."""
tools/exp_duality_scale_contrast.py:149:    print(f"Got {n_gaps} prime gaps. Generating GUE and Poisson controls...")
tools/exp_duality_scale_contrast.py:150:    gue_gaps = gue_spacings(min(n_gaps, 2000), rng)  # GUE limited by matrix size
tools/exp_duality_scale_contrast.py:162:    print(f"Computing windowed contrast for Poisson gaps...")
tools/exp_duality_scale_contrast.py:165:    # GUE: smaller windows only (limited by matrix size)
tools/exp_duality_scale_contrast.py:167:    print(f"Computing windowed contrast for GUE gaps (sizes: {gue_window_sizes})...")
tools/exp_duality_scale_contrast.py:223:    for domain in ["primes", "gue", "poisson"]:
tools/exp_duality_scale_contrast.py:224:        z = result["global_z"][domain]
tools/exp_duality_scale_contrast.py:226:        lines.append(f"  {domain:10s}: {zstr}")
tools/exp_duality_scale_contrast.py:230:    lines.append(f"  {'W_size':>8s}  {'Primes':>10s}  {'GUE':>10s}  {'Poisson':>10s}")
tools/exp_duality_scale_contrast.py:259:    for domain, data in [("primes", prime_data), ("poisson", poisson_data)]:
tools/exp_duality_scale_contrast.py:268:            lines.append(f"  {domain}: |z_SR| crosses 2 at window_size ~ {crossing}")
tools/exp_duality_scale_contrast.py:270:            lines.append(f"  {domain}: no crossing detected in range")
tools/exp_denominator_gate_transfer_matrix.py:8:GUE/Poisson BOUNDARY perimeter. Each perimeter has a coherent endpoint and an
tools/exp_denominator_gate_transfer_matrix.py:357:        "question": "Which parts of the denominator gate transfer outside BOUNDARY?",
tools/exp_gap_label_ostrowski_recognizability_gate.py:92:def boundary_distance(center: int, n: int, boundaries: list[int]) -> tuple[int, int]:
tools/exp_gap_label_ostrowski_recognizability_gate.py:111:        distance, nearest = boundary_distance(center, n, boundaries)
tools/exp_gap_label_ostrowski_recognizability_gate.py:124:            "nearest_boundary": nearest,
tools/exp_gap_label_ostrowski_recognizability_gate.py:125:            "boundary_distance": distance,
tools/exp_gap_label_ostrowski_recognizability_gate.py:126:            "boundary_distance_over_N": float(distance / n),
tools/exp_gap_label_ostrowski_recognizability_gate.py:127:            "boundary_distance_over_min_chunk": float(distance / local_scale),
tools/exp_gap_label_ostrowski_recognizability_gate.py:128:            "boundary_hit_le_2": bool(distance <= 2),
tools/exp_gap_label_ostrowski_recognizability_gate.py:139:        "boundary_hit_le_2_count": int(sum(r["boundary_hit_le_2"] for r in rows)),
tools/exp_gap_label_ostrowski_recognizability_gate.py:140:        "boundary_hit_le_2_rate": float(sum(r["boundary_hit_le_2"] for r in rows) / len(rows)),
tools/exp_gap_label_ostrowski_recognizability_gate.py:141:        "median_boundary_distance": float(np.median([r["boundary_distance"] for r in rows])),
tools/exp_gap_label_ostrowski_recognizability_gate.py:142:        "median_boundary_distance_over_N": float(np.median([r["boundary_distance_over_N"] for r in rows])),
tools/exp_gap_label_ostrowski_recognizability_gate.py:143:        "median_boundary_distance_over_min_chunk": float(np.median([r["boundary_distance_over_min_chunk"] for r in rows])),
tools/exp_gap_label_ostrowski_recognizability_gate.py:231:            "hit_le_2": f"{data.get('boundary_hit_le_2_count')}/{data['rows']}",
tools/exp_gap_label_ostrowski_recognizability_gate.py:232:            "median_dist": data["median_boundary_distance"],
tools/exp_gap_label_ostrowski_recognizability_gate.py:233:            "median_dist_over_min_chunk": data["median_boundary_distance_over_min_chunk"],
tools/exp_dipolar_crossover.py:3:exp_dipolar_crossover.py — Topology of the GUE-Poisson transition in the dipolar plane.
tools/exp_dipolar_crossover.py:5:Question: As ordering is gradually destroyed (GUE → shuffled), does the dipolar
tools/exp_dipolar_crossover.py:10:  1. Generate GUE bulk spacings from random matrices
tools/exp_dipolar_crossover.py:14:     - Leave the rest in original (GUE) order
tools/exp_dipolar_crossover.py:19:If primes sit on the curve → they're "partially disordered GUE"
tools/exp_dipolar_crossover.py:33:    """Generate bulk spacings from GUE matrices."""
tools/exp_dipolar_crossover.py:98:    print(f"Generating GUE spacings: {n_matrices} matrices of size {N_mat}...")
tools/exp_dipolar_crossover.py:101:    # GUE baseline (alpha=0)
tools/exp_dipolar_crossover.py:214:        "GUE_baseline": {"SR": float(sr0), "L1": float(l1_0)},
tools/exp_excess_scaling.py:5:Claim (BOUNDARY): <r>_primes > <r>_Cramer always, and the gap GROWS with n.
tools/exp_excess_scaling.py:124:# Additional: check GUE vs Poisson classification
tools/exp_excess_scaling.py:125:# GUE: <r> ~ 0.5307, Poisson: <r> ~ 0.3863
tools/exp_excess_scaling.py:126:r_GUE = 0.5307
tools/exp_excess_scaling.py:127:r_Poisson = 0.3863
tools/exp_excess_scaling.py:129:print(f"\n  Reference: GUE <r> = {r_GUE}, Poisson <r> = {r_Poisson}")
tools/exp_excess_scaling.py:133:# Does <r> move toward Poisson at large scale?
tools/exp_excess_scaling.py:135:    print(f"  <r> DECREASES with scale: moving toward Poisson")
tools/exp_excess_scaling.py:137:    print(f"  <r> INCREASES with scale: moving toward/staying GUE")
tools/exp_markov_memory_by_gue_type.py:3:Markov Memory Decomposition Across GUE Types
tools/exp_markov_memory_by_gue_type.py:5:Question: The TWO_KINDS_GUE result (2026-04-24) found that distribution-GUE
tools/exp_markov_memory_by_gue_type.py:6:domains (primes, GUE matrices) retain GUE classification after shuffle, while
tools/exp_markov_memory_by_gue_type.py:7:ordering-GUE domains (fibonacci, coupled_osc, percolation) collapse to Poisson.
tools/exp_markov_memory_by_gue_type.py:11:This experiment asks: what is the Markov memory profile of each GUE type?
tools/exp_markov_memory_by_gue_type.py:12:If ordering-GUE domains get their classification FROM sequential ordering,
tools/exp_markov_memory_by_gue_type.py:16:- For each domain, compute gap sequence
tools/exp_markov_memory_by_gue_type.py:22:Null baseline: 200 shuffles per domain (same distribution, destroyed order).
tools/exp_markov_memory_by_gue_type.py:114:    """Pure Poisson process gaps (exponential)."""
tools/exp_markov_memory_by_gue_type.py:119:    """GUE random matrix eigenvalue spacings."""
tools/exp_markov_memory_by_gue_type.py:133:    # Domain definitions with GUE type from TWO_KINDS_GUE result
tools/exp_markov_memory_by_gue_type.py:134:    domains = {}
tools/exp_markov_memory_by_gue_type.py:136:    # Distribution-GUE domains (survive shuffle)
tools/exp_markov_memory_by_gue_type.py:137:    print("Generating domains...")
tools/exp_markov_memory_by_gue_type.py:138:    domains['primes'] = {
tools/exp_markov_memory_by_gue_type.py:140:        'type': 'distribution-GUE',
tools/exp_markov_memory_by_gue_type.py:143:    domains['gue_matrix'] = {
tools/exp_markov_memory_by_gue_type.py:145:        'type': 'distribution-GUE',
tools/exp_markov_memory_by_gue_type.py:149:    # Ordering-GUE domains (collapse to Poisson on shuffle)
tools/exp_markov_memory_by_gue_type.py:156:        domains[dom_name] = {
tools/exp_markov_memory_by_gue_type.py:158:            'type': 'ordering-GUE',
tools/exp_markov_memory_by_gue_type.py:167:            domains['string_vibration'] = {
tools/exp_markov_memory_by_gue_type.py:168:                'gaps': gaps, 'type': 'ordering-GUE', 'delta_r_sign': '+'
tools/exp_markov_memory_by_gue_type.py:173:    # Poisson domains (control)
tools/exp_markov_memory_by_gue_type.py:174:    domains['poisson'] = {
tools/exp_markov_memory_by_gue_type.py:176:        'type': 'Poisson',
tools/exp_markov_memory_by_gue_type.py:185:                domains[dom_name] = {
tools/exp_markov_memory_by_gue_type.py:186:                    'gaps': gaps, 'type': 'Poisson', 'delta_r_sign': '0'
tools/exp_markov_memory_by_gue_type.py:191:    print(f"Domains ready: {list(domains.keys())}")
tools/exp_markov_memory_by_gue_type.py:198:    for name, info in domains.items():
tools/exp_markov_memory_by_gue_type.py:206:            'domain': name,
tools/exp_markov_memory_by_gue_type.py:243:        print(f"{r['domain']:<22} {r['gue_type']:<18} {r['N']:>6}  "
tools/exp_markov_memory_by_gue_type.py:251:    print("\nAggregate by GUE type:")
tools/exp_markov_memory_by_gue_type.py:252:    for gtype in ['distribution-GUE', 'ordering-GUE', 'Poisson']:
tools/exp_markov_memory_by_gue_type.py:267:        'question': 'Does Markov memory discriminate distribution-GUE from ordering-GUE?',
tools/exp_markov_dipolar_decomposition.py:6:GUE has dL1/dSR = 8.37 at angle -97 deg.
tools/exp_observable_rank_audit.py:7:directions or mostly re-measure one latent boundary coordinate.
tools/exp_observable_rank_audit.py:24:from exp_3d_boundary_layers import get_primes, gue_gaps, partial_shuffle
tools/exp_observable_rank_audit.py:160:        "question": "When do canonical observable retention curves break collinearity across domains?",
tools/exp_physical_sr_residue_bounce.py:6:  physical A: quantum-chaotic GUE spectra
tools/exp_physical_sr_residue_bounce.py:7:  mathematical transducer: span-matched Poisson counter-boundary
tools/exp_physical_sr_residue_bounce.py:12:counter-boundary at a localized endpoint, while chaotic spectra keep SR active.
tools/exp_physical_sr_residue_bounce.py:271:            "poisson_contrast": "span-matched Poisson null for each class/label",
tools/exp_physical_sr_residue_bounce.py:301:            "optional_expected_class": "class label used for grouped Poisson contrast and direct class contrast",
tools/exp_physical_sr_residue_bounce.py:311:            "poisson_contrast": "real spectrum versus span-matched Poisson null",
tools/exp_physical_sr_residue_bounce.py:327:            "GUE_unitary_no_time_reversal": {
tools/exp_physical_sr_residue_bounce.py:337:            "transfer": "SR,L1,triple_var pass from the mathematical deposit into a physical spectrum tester as component states against Poisson and, when classes exist, direct class contrast.",
tools/exp_physical_sr_residue_bounce.py:339:            "fall": "Tester falls if GOE/GUE direct SR separation disappears, if Poisson contrast absorbs all focus observables in chaotic classes, or if Anderson W6 keeps SR active under the declared threshold.",
tools/exp_physical_sr_residue_bounce.py:342:            "declared": "single ordered spectrum or small class-labeled set; no new physical domain generation",
tools/exp_physical_sr_residue_bounce.py:345:                "class-labeled input where direct_contrast is not separated on SR despite declared GOE/GUE classes",
tools/exp_physical_sr_residue_bounce.py:376:                    ("GUE_unitary_no_time_reversal", "beta_2_complex_hermitian", gue_levels(n, rng)),
tools/exp_physical_sr_residue_bounce.py:419:        gue_key = f"N{n}:GUE_unitary_no_time_reversal"
tools/exp_physical_sr_residue_bounce.py:421:        symmetry_contrasts[f"N{n}:GUE_minus_GOE"] = contrast(
tools/exp_physical_sr_residue_bounce.py:422:            f"N{n}:GUE_minus_GOE",
tools/exp_physical_sr_residue_bounce.py:428:    source = summaries["GUE_unitary_no_time_reversal"]
tools/exp_physical_sr_residue_bounce.py:439:        "physical_source": "quantum-chaotic spectra modeled by GOE and GUE symmetry classes",
tools/exp_physical_sr_residue_bounce.py:440:        "mathematical_transducer": "span-matched counter-boundary on canonical gap observables",
tools/exp_physical_sr_residue_bounce.py:445:            "GUE": "Wigner-Dyson beta=2, complex Hermitian, no time-reversal symmetry",
tools/exp_physical_sr_residue_bounce.py:446:            "Poisson": "independent levels, span-matched finite sample null",
tools/exp_physical_sr_residue_bounce.py:447:            "Anderson_1D_W6": "finite-size disorder/localization boundary, not a universal transition",
tools/exp_perturbation_dimensionality_audit.py:7:The 2026-05-06 03:30 run found that GUE spacing sequences expose a second
tools/exp_perturbation_dimensionality_audit.py:9:to one axis. That run used a short GUE sequence. This tool repeats the same
tools/exp_perturbation_dimensionality_audit.py:306:    fixed_domains = {
tools/exp_perturbation_dimensionality_audit.py:314:        "question": "Is the GUE second perturbation axis stable across independent ensembles and sample-size controls?",
tools/exp_perturbation_dimensionality_audit.py:319:        "fixed_domains": {},
tools/exp_perturbation_dimensionality_audit.py:326:    print("fixed domains")
tools/exp_perturbation_dimensionality_audit.py:327:    print(f"{'domain':<22} {'N':>7} {'rank':>7} {'PC2':>7} {'cos(adj,large)':>15}")
tools/exp_perturbation_dimensionality_audit.py:328:    for name, gaps in fixed_domains.items():
tools/exp_perturbation_dimensionality_audit.py:331:        output["fixed_domains"][name] = res
tools/exp_perturbation_dimensionality_audit.py:336:    print("\nGUE independent replicates")
tools/exp_prime_vs_mod6_sr_boundary.py:3:Strict prime-vs-mod6 audit for the SR boundary residue.
tools/exp_prime_vs_mod6_sr_boundary.py:5:The previous cycle falsified `prime_SR_persistent_boundary` in the broad
tools/exp_prime_vs_mod6_sr_boundary.py:21:from exp_boundary_residual_beta_absent_audit import support_state
tools/exp_prime_vs_mod6_sr_boundary.py:23:from exp_semireal_boundary_transfer_gate import row_spacings
tools/exp_prime_vs_mod6_sr_boundary.py:340:        "experiment": "prime_vs_mod6_sr_boundary",
tools/exp_prime_vs_mod6_sr_boundary.py:341:        "question": "Does SR belong to prime selection or to the row-local 6k +/- 1 pre-boundary?",
tools/exp_prime_vs_mod6_sr_boundary.py:501:    parser.add_argument("--out", default="tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json")
tools/exp_poisson_convergence.py:3:exp_poisson_convergence.py — Do beta, <r>_excess, and acf1 predict the same Poisson scale?
tools/exp_poisson_convergence.py:5:Three independent observables drift toward Poisson at large prime scale:
tools/exp_poisson_convergence.py:7:  - <r> excess over Cramer -> 0  (i.e. <r> -> <r>_Poisson ~ 0.386)
tools/exp_poisson_convergence.py:10:Question: do all three extrapolate to Poisson at the SAME critical scale p*?
tools/exp_poisson_convergence.py:193:    """Fit linear trends in ln(p) and extrapolate to Poisson."""
tools/exp_poisson_convergence.py:196:    # Poisson targets
tools/exp_poisson_convergence.py:263:    print("CONVERGENCE SUMMARY: Three roads to Poisson")
tools/exp_poisson_convergence.py:271:        print(f"    Target (Poisson): {f['target']:.4f}")
tools/exp_poisson_convergence.py:273:            print(f"    Extrapolated Poisson at: ln(p*) = {f['ln_p_star']:.1f}  =>  p* ~ 10^{f['ln_p_star']/np.log(10):.1f}")
tools/exp_poisson_convergence.py:275:            print(f"    No convergence toward Poisson (slope wrong sign or flat)")
tools/exp_poisson_convergence.py:295:            print(f"  => CONSISTENT: all observables predict Poisson at similar scale")
tools/exp_poisson_convergence.py:305:    parser = argparse.ArgumentParser(description='Poisson convergence: do beta, <r>, acf1 agree?')
tools/exp_poisson_convergence.py:320:        'question': 'Do beta, <r>, and acf1 predict the same Poisson scale?',
tools/exp_quasiperiodic_grammar_scale_gate.py:176:    domains = {
tools/exp_quasiperiodic_grammar_scale_gate.py:189:                for name, theta in domains.items():
tools/exp_prime_mobius_zero_mediator_gate.py:203:        return "boundary"
tools/exp_prime_mobius_zero_mediator_gate.py:283:        "question": "Does S=0 behave as noise, boundary, or mediator in the Mobius interval-charge gate?",
tools/exp_psd_amplitude_scaling.py:146:    # Poisson crossover prediction from dip_ratio → 1.0 (no suppression)
tools/exp_psd_amplitude_scaling.py:150:        print(f"\nPoisson crossover (dip→1.0): ln(p*)={ln_p_cross_dip:.1f}  "
tools/exp_psd_amplitude_scaling.py:154:        print(f"\nDip ratio DECREASING with scale — no Poisson crossover from PSD dip")
tools/exp_psd_amplitude_scaling.py:156:    # Poisson crossover from spectral_slope → 0
tools/exp_psd_amplitude_scaling.py:159:        print(f"Poisson crossover (slope→0): ln(p*)={ln_p_cross_slope:.1f}  "
tools/exp_sturmian_denominator_alignment_gate.py:3:Denominator-aligned Sturmian gate for the Aubry/Sturmian boundary.
tools/exp_sturmian_denominator_alignment_gate.py:120:        "domain": f"{family}_sturmian_binary",
tools/exp_quasiperiodic_vc_curve_map.py:7:same boundary observable but moves one step regressively: measure the local
tools/exp_quasiperiodic_vc_curve_map.py:132:    domains = {
tools/exp_quasiperiodic_vc_curve_map.py:145:            for domain, theta in domains.items():
tools/exp_quasiperiodic_vc_curve_map.py:146:                seqs.append((domain, None, sturmian_sequence(theta, n, phase)))
tools/exp_quasiperiodic_vc_curve_map.py:152:            for domain, trial, seq in seqs:
tools/exp_quasiperiodic_vc_curve_map.py:155:                    "domain": domain,
tools/exp_quasiperiodic_vc_curve_map.py:168:                        "domain": domain,
tools/exp_quasiperiodic_vc_curve_map.py:177:    for domain in sorted({row["domain"] for row in rows}):
tools/exp_quasiperiodic_vc_curve_map.py:178:        subset = [row for row in rows if row["domain"] == domain]
tools/exp_quasiperiodic_vc_curve_map.py:179:        summary[domain] = {
tools/exp_quasiperiodic_vc_curve_map.py:192:        grouped_threshold[(row["domain"], row["r_threshold"])].append(row)
tools/exp_quasiperiodic_vc_curve_map.py:193:    for (domain, threshold), subset in sorted(grouped_threshold.items()):
tools/exp_quasiperiodic_vc_curve_map.py:194:        summary_by_threshold[f"{domain}|r_threshold={threshold}"] = {
tools/exp_quasiperiodic_vc_curve_map.py:214:                by_domain = {row["domain"]: row for row in key_rows}
tools/exp_quasiperiodic_vc_curve_map.py:215:                if {"phi", "silver", "bronze"} <= set(by_domain):
tools/exp_quasiperiodic_vc_curve_map.py:216:                    values = {name: by_domain[name]["vc_interp"] for name in ("phi", "silver", "bronze")}
tools/exp_scale_selective_perturbation.py:7:(PC1 ~99%). Is this because the boundary is genuinely 1D, or because uniform
tools/exp_scale_selective_perturbation.py:19:If different perturbation types produce different observable profiles -> the boundary
tools/exp_scale_selective_perturbation.py:21:If all perturbation types produce the same profile -> the boundary is 1D in observable space.
tools/exp_scale_selective_perturbation.py:48:    """Generate N GUE gaps (eigenvalue spacings of random Hermitian matrix)."""
tools/exp_scale_selective_perturbation.py:66:    """Generate N Poisson (iid exponential) gaps."""
tools/exp_scale_selective_perturbation.py:196:    for domain_name, gen_func in [('primes', lambda: generate_primes(N)),
tools/exp_scale_selective_perturbation.py:197:                                   ('GUE', lambda: generate_gue(N, rng))]:
tools/exp_scale_selective_perturbation.py:200:        print(f"\n=== {domain_name} (N={actual_n}) ===")
tools/exp_scale_selective_perturbation.py:218:        domain_result = {
tools/exp_scale_selective_perturbation.py:258:            domain_result['perturbations'][pert_name] = pert_result
tools/exp_scale_selective_perturbation.py:294:        domain_result['pca'] = {
tools/exp_scale_selective_perturbation.py:301:        domain_result['centroid_cosine_similarity'] = cos_sim
tools/exp_scale_selective_perturbation.py:311:            ret = domain_result['perturbations'][pert_name]['alpha_0.5']['retention']
tools/exp_scale_selective_perturbation.py:314:        results[domain_name] = domain_result
tools/exp_two_channel_cross_domain.py:3:exp_two_channel_cross_domain.py — Two-Channel Decomposition Across Domains
tools/exp_two_channel_cross_domain.py:9:  2. Statistical (magnitude): decays slowly toward Poisson
tools/exp_two_channel_cross_domain.py:11:C1 claims primes are the only dynamic domain under M among 7 tested.
tools/exp_two_channel_cross_domain.py:17:  - GUE eigenvalues: random matrix, strong statistical correlation, no arithmetic
tools/exp_two_channel_cross_domain.py:20:For each domain, at multiple scales, we measure:
tools/exp_two_channel_cross_domain.py:27:If GUE shows only decaying channels → C1 supported (algebraic invariance is prime-specific)
tools/exp_two_channel_cross_domain.py:28:If GUE shows a scale-invariant channel → C1 needs refinement
tools/exp_two_channel_cross_domain.py:31:    python tools/exp_two_channel_cross_domain.py [--n_primes N] [--gue_size N] [--n_windows N]
tools/exp_two_channel_cross_domain.py:63:    """Generate unfolded spacings from GUE random matrices."""
tools/exp_two_channel_cross_domain.py:66:        # GUE: H = (A + A^*) / (2 * sqrt(2N)), A is complex Gaussian
tools/exp_two_channel_cross_domain.py:295:    # === GUE EIGENVALUES ===
tools/exp_two_channel_cross_domain.py:296:    print(f"\n=== GUE EIGENVALUES ({gue_matrices} matrices of size {gue_size}) ===")
tools/exp_two_channel_cross_domain.py:298:    print(f"Got {len(gue_spacings)} GUE spacings, mean={np.mean(gue_spacings):.3f}")
tools/exp_two_channel_cross_domain.py:351:    """Extract scale-dependence of z-scores for each domain."""
tools/exp_two_channel_cross_domain.py:353:    for domain, data in results.items():
tools/exp_two_channel_cross_domain.py:371:        summary[domain] = {
tools/exp_two_channel_cross_domain.py:399:    for domain, s in summary.items():
tools/exp_two_channel_cross_domain.py:400:        print(f"{domain:>12} | "
tools/exp_two_channel_cross_domain.py:412:    print("         GUE/Cramer should show decaying or absent binary channel")
tools/exp_two_channel_cross_domain.py:432:        'experiment': 'two_channel_cross_domain',
tools/exp_two_channel_cross_domain.py:446:    out_path = Path('tools/data/two_channel_cross_domain.json')
tools/exp_spectral_2d.py:17:4. Anti-correlated Poisson: Poisson gaps with imposed negative acf1 →
tools/exp_spectral_2d.py:174:    Model: Poisson gaps, but forced to alternate large-small.
tools/exp_spectral_2d.py:324:    # --- Reference domains ---
tools/exp_spectral_2d.py:325:    domains = [
tools/exp_spectral_2d.py:327:        ("GUE", lambda n: gen_gue(n)),
tools/exp_spectral_2d.py:328:        ("Poisson", lambda n: np.random.exponential(1.0, n)),
tools/exp_spectral_2d.py:333:        domains.append((f"BR_{rho:.1f}", lambda n, r=rho: gen_berry_robnik(n, r)))
tools/exp_spectral_2d.py:336:    domains.extend([
tools/exp_spectral_2d.py:350:    for name, gen in domains:
tools/exp_vc_unit_boundary_audit.py:3:Audit the V_c=1 boundary after the fit-ready/model gate.
tools/exp_vc_unit_boundary_audit.py:7:window, or are already below 1. The unit boundary is treated as a structural
tools/exp_vc_unit_boundary_audit.py:95:        "experiment": "vc_unit_boundary_audit",
tools/exp_vc_unit_boundary_audit.py:98:            "unit_boundary": "V_c = 1",
tools/exp_two_channel_decomposition.py:18:  - Extrapolated Poisson crossover
tools/exp_two_channel_decomposition.py:344:            # Poisson crossover: acf1 = 0
tools/exp_two_channel_decomposition.py:353:                  f"R2={r2:.3f}  Poisson at ln(p)={ln_p_cross:.1f} (p~10^{ln_p_cross/np.log(10):.1f})")
tools/exp_two_layer_universality.py:13:  1. Generate 7 gap/spacing sequences: primes, GUE, Poisson, AR(1), logistic,
tools/exp_two_layer_universality.py:249:    'GUE': gen_gue_spacings,
tools/exp_two_layer_universality.py:250:    'Poisson': gen_poisson_spacings,
tools/exp_two_layer_universality.py:282:        if seq_name in ('GUE', 'Poisson', 'AR1'):
tools/exp_number_variance.py:4:Tests whether the GUE->Poisson drift (seen in gap ratio) is confirmed
tools/exp_number_variance.py:7:GUE: Sigma^2(L) ~ (2/pi^2) * ln(L) + const  (logarithmic)
tools/exp_number_variance.py:8:Poisson: Sigma^2(L) = L  (linear)
tools/exp_number_variance.py:10:If primes drift toward Poisson at large scale, the number variance
tools/exp_number_variance.py:56:    """Poisson prediction: Sigma^2 = L."""
tools/exp_number_variance.py:60:    """GUE prediction: Sigma^2 ~ (2/pi^2) * ln(L) + 0.44 (approximate)."""
tools/exp_number_variance.py:83:    # Shuffled baseline (destroy correlations -> Poisson-like)
tools/exp_number_variance.py:118:    print(f"  Log-fit slope (primes):   {coeffs_prime[0]:.4f}  (GUE={2/np.pi**2:.4f})")
tools/exp_number_variance.py:123:    print(f"  Better fit: {'LOG (GUE-like)' if r2_log > r2_lin else 'LINEAR (Poisson-like)'}")
tools/exp_number_variance.py:125:    print(f"\n  L    | Σ²_prime  | Σ²_shuf  | Σ²_GUE  | Σ²_Poisson")
tools/exp_number_variance.py:151:# Key metric: does log_slope increase with scale? (would mean moving away from GUE)
tools/exp_number_variance.py:158:    print(f"  GUE value: {2/np.pi**2:.4f}")
tools/exp_number_variance.py:159:    print(f"  If trend > 0: number variance grows faster at large scale -> MORE Poisson")
tools/exp_number_variance.py:160:    print(f"  If trend ~ 0: stable -> GUE character preserved")
tools/exp_number_variance.py:166:    "claim_under_test": "BOUNDARY: GUE->Poisson drift in primes",
tools/exp_number_variance.py:167:    "method": "Number variance Sigma^2(L) at 5 scales, compared with GUE and Poisson predictions",
tools/exp_aubry_boundary_phase_transport_gate.py:3:Aubry/Fibonacci boundary phase transport gate.
tools/exp_aubry_boundary_phase_transport_gate.py:5:Projects the live BOUNDARY direction into a 1D tight-binding model with binary
tools/exp_aubry_boundary_phase_transport_gate.py:6:quasiperiodic potentials. The test is deliberately joint: a boundary return is
tools/exp_aubry_boundary_phase_transport_gate.py:81:    domain: str,
tools/exp_aubry_boundary_phase_transport_gate.py:93:        "domain": domain,
tools/exp_aubry_boundary_phase_transport_gate.py:127:def median_metric(summary: dict[str, Any], domain: str, v_key: str, metric: str) -> float | None:
tools/exp_aubry_boundary_phase_transport_gate.py:128:    value = summary.get(v_key, {}).get(domain, {}).get(metric, {})
tools/exp_aubry_boundary_phase_transport_gate.py:152:    domains = {
tools/exp_aubry_boundary_phase_transport_gate.py:164:                for domain, theta in domains.items():
tools/exp_aubry_boundary_phase_transport_gate.py:166:                    rows.append(spectrum_row(domain, seq, n, phase, float(v_value), args.central_fraction))
tools/exp_aubry_boundary_phase_transport_gate.py:190:        for domain in sorted({row["domain"] for row in rows}):
tools/exp_aubry_boundary_phase_transport_gate.py:191:            subset = [row for row in rows if row["domain"] == domain and abs(row["V"] - v_value) < 1e-12]
tools/exp_aubry_boundary_phase_transport_gate.py:192:            summary_by_v[v_key][domain] = aggregate(subset)
tools/exp_aubry_boundary_phase_transport_gate.py:194:    classification: dict[str, Any] = {"joint_boundary_v": [], "by_v": {}}
tools/exp_aubry_boundary_phase_transport_gate.py:224:            "joint_boundary": joint,
tools/exp_aubry_boundary_phase_transport_gate.py:227:            classification["joint_boundary_v"].append(float(v_value))
tools/exp_aubry_boundary_phase_transport_gate.py:230:        "experiment": "aubry_boundary_phase_transport_gate",
tools/exp_aubry_boundary_phase_transport_gate.py:244:            "claim": "phi is a physical boundary state between periodic order and balanced random disorder only if spectral spacing and localization agree",
tools/exp_aubry_boundary_phase_transport_gate.py:248:            "non_possible": "single-observable boundary, phase-aggregated critical value, or phi outside the periodic-random interval",
tools/exp_aubry_boundary_phase_transport_gate.py:268:    parser.add_argument("--out", default="tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json")
tools/exp_boundary_coherence.py:3:exp_boundary_coherence.py — Multi-Observable Boundary Coherence
tools/exp_boundary_coherence.py:5:Question: Do different observables agree on WHERE primes sit between GUE and Poisson?
tools/exp_boundary_coherence.py:10:  1. Mean spacing ratio <r>        (Poisson ≈ 0.386, GUE ≈ 0.5307)
tools/exp_boundary_coherence.py:11:  2. Gap variance ratio Var/μ²     (Poisson = 1.0, GUE ≈ 0.178)
tools/exp_boundary_coherence.py:12:  3. Small-gap fraction P(s<0.3)   (Poisson ≈ 0.259, GUE ≈ 0.020)
tools/exp_boundary_coherence.py:13:  4. Brody parameter β             (Poisson = 0, GUE = 1)
tools/exp_boundary_coherence.py:14:  5. Lag-1 autocorrelation         (Poisson = 0, GUE ≈ -0.27)
tools/exp_boundary_coherence.py:16:Each observable is normalized to τ ∈ [0,1] where 0=Poisson, 1=GUE.
tools/exp_boundary_coherence.py:30:# GUE values from random matrix theory (GOE for real symmetric, GUE for complex)
tools/exp_boundary_coherence.py:60:    """Var(gaps) / mean(gaps)² — 1 for Poisson, <1 for correlated."""
tools/exp_boundary_coherence.py:113:    """Normalize observable to τ ∈ [0,1] where 0=Poisson, 1=GUE."""
tools/exp_boundary_coherence.py:122:    """Generate GUE spacings from random Hermitian matrices."""
tools/exp_boundary_coherence.py:126:        # GUE: complex Hermitian with Gaussian entries
tools/exp_boundary_coherence.py:137:    """Generate Poisson spacings (exponential distribution)."""
tools/exp_boundary_coherence.py:161:    print("Computing GUE reference...")
tools/exp_boundary_coherence.py:164:    results["GUE_reference"] = {
tools/exp_boundary_coherence.py:169:    print("Computing Poisson reference...")
tools/exp_boundary_coherence.py:172:    results["Poisson_reference"] = {
tools/exp_boundary_coherence.py:204:    print("MULTI-OBSERVABLE BOUNDARY COHERENCE")
tools/exp_boundary_coherence.py:207:    print(f"\nReference anchors (τ should be ≈ 0 for Poisson, ≈ 1 for GUE):")
tools/exp_boundary_coherence.py:208:    print(f"  {'Observable':<20} {'Poisson τ':>10} {'GUE τ':>10}")
tools/exp_boundary_coherence.py:210:        pt = results["Poisson_reference"]["tau"][obs_name]
tools/exp_boundary_coherence.py:211:        gt = results["GUE_reference"]["tau"][obs_name]
tools/exp_boundary_coherence.py:214:    print(f"\nPrime gaps — τ values (0=Poisson, 1=GUE):")
tools/exp_boundary_coherence.py:319:    out_path = os.path.join(DATA_DIR, "boundary_coherence.json")
tools/exp_boundary_mixture_gate.py:3:exp_boundary_mixture_gate.py
tools/exp_boundary_mixture_gate.py:5:Reusable META/BOUNDARY audit for the GUE-Poisson boundary.
tools/exp_boundary_mixture_gate.py:8:    Does the GUE/Poisson boundary remain a clean two-class split after the
tools/exp_boundary_mixture_gate.py:13:It builds synthetic mixtures by replacing a fraction beta of unfolded GUE
tools/exp_boundary_mixture_gate.py:14:spacings with Poisson spacings, then measures:
tools/exp_boundary_mixture_gate.py:19:- ambiguity of each beta layer relative to pure GUE and pure Poisson centroids.
tools/exp_boundary_mixture_gate.py:41:    """Generate unfolded GUE spacings by concatenating independent matrices."""
tools/exp_boundary_mixture_gate.py:59:    """Return a beta Poisson / (1-beta) GUE spacing sequence with mean spacing 1."""
tools/exp_boundary_mixture_gate.py:223:        "experiment": "boundary_mixture_gate",
tools/exp_boundary_mixture_gate.py:224:        "question": "Is the GUE-Poisson mixed layer cleanly classifiable after denominator gating?",
tools/exp_boundary_mixture_gate.py:277:    parser.add_argument("--out", default="tools/data/boundary_mixture_gate.json")
tools/exp_boundary_shuffle_audit.py:2:exp_boundary_shuffle_audit.py — Is the GUE/Poisson classification tautological?
tools/exp_boundary_shuffle_audit.py:4:Question: Does the r-statistic (nearest-neighbor spacing ratio) of each domain
tools/exp_boundary_shuffle_audit.py:8:  For each domain, compute:
tools/exp_boundary_shuffle_audit.py:16:Domains: primes, zeta zeros, random matrix (GUE), Fibonacci spectrum,
tools/exp_boundary_shuffle_audit.py:17:         logistic map, Poisson, coupled oscillators, percolation,
tools/exp_boundary_shuffle_audit.py:83:    """GUE random matrices — eigenvalue spacings."""
tools/exp_boundary_shuffle_audit.py:100:    """Poisson process — exponential spacings."""
tools/exp_boundary_shuffle_audit.py:238:R_GUE = 0.5307  # 4 - 2√3 ≈ 0.5359 for GOE; for GUE: 2π/(3√3 + 4π/3) ≈ 0.5307 approx
tools/exp_boundary_shuffle_audit.py:244:    'gue':                 ('GUE random matrix',          gen_gue_eigenvalues),
tools/exp_boundary_shuffle_audit.py:245:    'poisson':             ('Poisson process',            gen_poisson),
tools/exp_boundary_shuffle_audit.py:275:            dist_gue = abs(res['r_original'] - R_GUE)
tools/exp_boundary_shuffle_audit.py:277:            res['class_original'] = 'GUE' if dist_gue < dist_poi else 'Poisson'
tools/exp_boundary_shuffle_audit.py:279:            dist_gue_s = abs(res['r_shuffled_mean'] - R_GUE)
tools/exp_boundary_shuffle_audit.py:281:            res['class_shuffled'] = 'GUE' if dist_gue_s < dist_poi_s else 'Poisson'
tools/exp_boundary_shuffle_audit.py:308:    print(f"  SUMMARY: GUE/Poisson Classification Shuffle Audit")
tools/exp_boundary_shuffle_audit.py:336:    print(f"\n  R_GUE = {R_GUE:.4f}, R_Poisson = {R_POISSON:.4f}")
tools/exp_boundary_shuffle_audit.py:355:        'reference': {'R_GUE': R_GUE, 'R_Poisson': R_POISSON},
tools/exp_boundary_shuffle_audit.py:356:        'domains': results,
tools/exp_boundary_shuffle_audit.py:359:    outfile = Path(__file__).parent / 'data' / 'boundary_shuffle_audit.json'
tools/exp_brody_calibration.py:6:Poisson (beta=0) to Wigner-GUE (beta=1). Gaps are i.i.d. by construction —
tools/exp_brody_calibration.py:15:Then overlay REAL domains on the calibration curve. Their deviation from the
tools/exp_brody_calibration.py:169:    # === Phase 2: Real domains ===
tools/exp_brody_calibration.py:200:    real_domains = {}
tools/exp_brody_calibration.py:206:    real_domains['primes'] = {**obs_p, 'beta_eff': beta_eff_p}
tools/exp_brody_calibration.py:211:    # GUE matrices
tools/exp_brody_calibration.py:215:    real_domains['gue_matrix'] = {**obs_g, 'beta_eff': beta_eff_g}
tools/exp_brody_calibration.py:230:    real_domains['logistic'] = {**obs_l, 'beta_eff': beta_eff_l}
tools/exp_brody_calibration.py:235:    # Poisson
tools/exp_brody_calibration.py:239:    real_domains['poisson'] = {**obs_po, 'beta_eff': beta_eff_po}
tools/exp_brody_calibration.py:252:    real_domains['coupled_osc'] = {**obs_osc, 'beta_eff': beta_eff_osc}
tools/exp_brody_calibration.py:266:    for name, obs in real_domains.items():
tools/exp_brody_calibration.py:326:    print(f"   Theory: Poisson r=0.386, GOE r=0.536")
tools/exp_brody_calibration.py:359:        'real_domains': sanitize(real_domains),
tools/exp_crossover_universality.py:3:Experiment: Universal Crossover — One boundary or many?
tools/exp_crossover_universality.py:5:Piano 39. Tensions: METRIC_TENSOR + BRODY_CROSSOVER + BOUNDARY + GAP_ANTICORR
tools/exp_crossover_universality.py:8:  - beta(ln p) drifts from ~0.39 to ~0.27  (toward Poisson=0)
tools/exp_crossover_universality.py:9:  - dR_acf1(ln p) drifts from ~-0.50 to ~-0.40  (toward Poisson=0?)
tools/exp_crossover_universality.py:10:  - gap_acf1(ln p) drifts from ~-0.07 to ~-0.04  (toward Poisson=0)
tools/exp_crossover_universality.py:12:If all three collapse onto one rescaled curve -> one universal boundary operator.
tools/exp_crossover_universality.py:18:  - Rescale each to crossover parameter c in [0,1]: c=0 at GUE, c=1 at Poisson
tools/exp_crossover_universality.py:21:  - Null: 15 Cramer surrogates (should be flat at Poisson)
tools/exp_crossover_universality.py:133:# GUE: beta=1, dR_acf1~?, gap_acf1~?, <r>=0.5307 (4/pi - 1 ?)
tools/exp_crossover_universality.py:134:# Poisson: beta=0, dR_acf1=0 (uncorrelated), gap_acf1=0, <r>=0.3863 (2ln2-1)
tools/exp_crossover_universality.py:135:# We use empirical GUE reference where analytic is unknown
tools/exp_crossover_universality.py:136:R_GUE = 0.5307  # 4/(pi+2) Wigner surmise
tools/exp_crossover_universality.py:140:print(f"  <r> GUE = {R_GUE:.4f}, <r> Poisson = {R_POISSON:.4f}")
tools/exp_crossover_universality.py:141:print(f"  beta GUE = 1.0, beta Poisson = 0.0")
tools/exp_crossover_universality.py:153:# Rescale each to c in [0,1] where 0=GUE-like, 1=Poisson-like
tools/exp_crossover_universality.py:154:# For beta: c = 1 - beta (beta=1 is GUE, so c=0)
tools/exp_crossover_universality.py:159:# Compute how fast each observable moves toward Poisson per decade of ln(p)
tools/exp_crossover_universality.py:160:# All should move toward Poisson (beta->0, dR_acf1->0, gap_acf1->0, r->0.386)
tools/exp_crossover_universality.py:166:# Fractional change per unit ln(p) toward Poisson
tools/exp_crossover_universality.py:167:# beta: Poisson=0, so rate = -slope/mean(beta)
tools/exp_crossover_universality.py:168:# gap_acf1: Poisson=0, rate = -slope/mean(gap_acf1) (gap_acf1 is negative, slope positive -> toward 0)
tools/exp_crossover_universality.py:169:# dR_acf1: if Poisson = 0, rate = -slope/mean(dR_acf1)
tools/exp_crossover_universality.py:170:# r_mean: Poisson = 0.386, rate = slope / (mean(r) - 0.386) ... toward lower r
tools/exp_crossover_universality.py:176:rates['r_mean'] = fits['r_mean']['slope'] / (np.mean(r_arr) - R_POISSON)  # negative if drifting toward Poisson
tools/exp_crossover_universality.py:179:    print(f"  {name:10s}: fractional rate toward Poisson = {rate:.6f} per unit ln(p)")
tools/exp_crossover_universality.py:275:# === Extrapolation: when does beta reach 0 (Poisson)? ===
tools/exp_crossover_universality.py:280:    print(f"  beta -> 0 (Poisson) at ln(p)={ln_p_poisson_beta:.1f}, p~{p_poisson_beta:.2e}")
tools/exp_crossover_universality.py:292:    print(f"  <r> -> {R_POISSON:.4f} (Poisson) at ln(p)={ln_p_poisson_r:.1f}, p~{p_poisson_r:.2e}")
tools/exp_crossover_universality.py:299:    "tensions": ["METRIC_TENSOR", "BRODY_CROSSOVER", "BOUNDARY", "GAP_ANTICORR"],
tools/exp_det_drift.py:8:  If primes drift toward Poisson, det(M) should drift toward +1.
tools/exp_duality_gate_transfer.py:5:Reusable META/DUALITA audit for transferring the BOUNDARY_LAYER_GATE.
tools/exp_duality_gate_transfer.py:9:    illusory duality, or does it become a local BOUNDARY metric when moved
tools/exp_duality_gate_transfer.py:10:    away from GUE/Poisson?
tools/exp_duality_gate_transfer.py:230:        "question": "Does the denominator-collapse gate transfer from BOUNDARY to DUALITA_DIPOLARE_VS_ILLUSORIA?",
tools/exp_gap_label_set_stability.py:151:    domains = {
tools/exp_gap_label_set_stability.py:165:                for name, theta in domains.items():
tools/exp_gap_label_set_stability.py:168:                    rows.append({"domain": name, "N": n, "phase": phase, "threshold": threshold, **obs})
tools/exp_gap_label_set_stability.py:175:                        "domain": "balanced_random_phi_labels",
tools/exp_gap_label_set_stability.py:183:    by_domain = {}
tools/exp_gap_label_set_stability.py:184:    for domain in sorted({row["domain"] for row in rows}):
tools/exp_gap_label_set_stability.py:185:        domain_rows = [row for row in rows if row["domain"] == domain]
tools/exp_gap_label_set_stability.py:186:        by_domain[domain] = {
tools/exp_gap_label_set_stability.py:187:            "global": summarize_sets(domain_rows),
tools/exp_gap_label_set_stability.py:188:            "phase_stability_by_N_threshold": grouped_stability(domain_rows, ("N", "threshold")),
tools/exp_gap_label_set_stability.py:189:            "threshold_stability_by_N_phase": grouped_stability(domain_rows, ("N", "phase")),
tools/exp_gap_label_set_stability.py:190:            "scale_stability_by_phase_threshold": grouped_stability(domain_rows, ("phase", "threshold")),
tools/exp_gap_label_set_stability.py:204:        "summary": by_domain,
tools/exp_gap_label_set_stability.py:228:        domain: {
tools/exp_gap_label_set_stability.py:235:        for domain, data in output["summary"].items()
tools/exp_photonic_boundary_third_included_gate.py:3:Photonic boundary third-included gate.
tools/exp_photonic_boundary_third_included_gate.py:5:This tool projects the GUE/Poisson boundary direction into a physical return:
tools/exp_photonic_boundary_third_included_gate.py:6:a 1D dielectric multilayer. It does not classify the optical spectrum as GUE or
tools/exp_photonic_boundary_third_included_gate.py:7:Poisson. It asks whether the boundary survives as an intermediate transmission
tools/exp_photonic_boundary_third_included_gate.py:115:def aggregate(rows: list[dict[str, Any]], domain: str) -> dict[str, Any]:
tools/exp_photonic_boundary_third_included_gate.py:116:    subset = [row for row in rows if row["domain"] == domain]
tools/exp_photonic_boundary_third_included_gate.py:143:def median_metric(summary: dict[str, Any], domain: str, metric: str) -> float | None:
tools/exp_photonic_boundary_third_included_gate.py:144:    value = summary.get(domain, {}).get(metric, {})
tools/exp_photonic_boundary_third_included_gate.py:154:    domains = {
tools/exp_photonic_boundary_third_included_gate.py:165:            for domain, theta in domains.items():
tools/exp_photonic_boundary_third_included_gate.py:169:                    "domain": domain,
tools/exp_photonic_boundary_third_included_gate.py:179:                "domain": "periodic_ab",
tools/exp_photonic_boundary_third_included_gate.py:191:                    "domain": "balanced_random_phi_density",
tools/exp_photonic_boundary_third_included_gate.py:199:    summary = {domain: aggregate(rows, domain) for domain in sorted({row["domain"] for row in rows})}
tools/exp_photonic_boundary_third_included_gate.py:215:        "experiment": "photonic_boundary_third_included_gate",
tools/exp_photonic_boundary_third_included_gate.py:230:            "claim": "photonic phi stack carries a boundary state between periodic order and balanced random disorder",
tools/exp_photonic_boundary_third_included_gate.py:237:            "third_included_photonic_boundary": third_included,
tools/exp_photonic_boundary_third_included_gate.py:263:    parser.add_argument("--out", default="tools/data/photonic_boundary_third_included_gate_20260515_1734.json")
tools/exp_photonic_boundary_third_included_gate.py:273:        "summary_domains": {
tools/exp_photonic_boundary_third_included_gate.py:274:            domain: {
tools/exp_photonic_boundary_third_included_gate.py:280:            for domain, row in output["summary"].items()
tools/exp_markov_k_direction.py:148:    print("Does higher-order memory point GUE-ward in the (SR, L1) plane?")
tools/exp_markov_k_direction.py:169:    GUE_THETA = -97.0
tools/exp_markov_k_direction.py:240:        'GUE_ref_theta': GUE_THETA,
tools/exp_acf_range_universality.py:3:exp_acf_range_universality.py — ACF decay structure across domains.
tools/exp_acf_range_universality.py:11:Domains: primes, GUE, GOE, Poisson, primes_shuffled.
tools/exp_acf_range_universality.py:69:def generate_rmt_spacings(N, n_mat, ensemble='GUE'):
tools/exp_acf_range_universality.py:74:        if ensemble == 'GUE':
tools/exp_acf_range_universality.py:162:    # PART B: Cross-domain comparison
tools/exp_acf_range_universality.py:164:    print(f"\n=== PART B: Cross-domain ACF (lags 1-{args.max_lag_other}) ===")
tools/exp_acf_range_universality.py:169:    print("Generating GUE spacings...")
tools/exp_acf_range_universality.py:170:    gue_gaps = generate_rmt_spacings(N_rmt, n_mat_rmt, 'GUE')
tools/exp_acf_range_universality.py:179:    domains = {
tools/exp_acf_range_universality.py:182:        'GUE': gue_gaps,
tools/exp_acf_range_universality.py:184:        'Poisson': poisson_gaps,
tools/exp_acf_range_universality.py:194:    for name, g in domains.items():
tools/exp_acf_range_universality.py:323:        'cross_domain': cross_results,
tools/exp_prime_sr_persistent_boundary.py:3:Audit `prime_SR_persistent_boundary` after `prime_persistent_blank` fell.
tools/exp_prime_sr_persistent_boundary.py:20:from exp_boundary_short_denominator_extension import gue_spacing_blocks
tools/exp_prime_sr_persistent_boundary.py:21:from exp_boundary_residual_beta_absent_audit import support_state
tools/exp_prime_sr_persistent_boundary.py:23:from exp_semireal_boundary_transfer_gate import row_spacings
tools/exp_prime_sr_persistent_boundary.py:178:        return "PRIME_SR_PERSISTENT_BOUNDARY_SPECIFIC"
tools/exp_prime_sr_persistent_boundary.py:201:        "experiment": "prime_sr_persistent_boundary",
tools/exp_prime_sr_persistent_boundary.py:202:        "question": "Does SR remain a prime-specific one-sided boundary signature across providers, offsets, and broader non-prime controls?",
tools/exp_prime_sr_persistent_boundary.py:216:            "claim": "prime_SR_persistent_boundary holds only if prime windows keep SR as the common one-sided observable across providers and offsets while broadened non-prime controls do not share full SR persistence",
tools/exp_prime_sr_persistent_boundary.py:219:            "generator": "prime gaps from dnd_autoricerca row_spacings and direct sieve; controls from composite gaps, mod6 candidates, Cramer-like events, GUE random matrix blocks, logistic return intervals",
tools/exp_prime_sr_persistent_boundary.py:220:            "denominator": "8 prime row-local windows plus 20 non-prime controls (3 deterministic families x 4 offsets + 4 stochastic GUE/logistic cases each by default)",
tools/exp_prime_sr_persistent_boundary.py:221:            "non_possible": "prime-specific SR boundary if prime SR rate falls below 8/8, if prime common obs is not exactly [SR], or if any control subfamily shares full SR persistence",
tools/exp_prime_sr_persistent_boundary.py:222:            "not_tested": "global beta atlas, V_c, gap_ratio, source GUE/Poisson labels, analytic origin of SR",
tools/exp_prime_sr_persistent_boundary.py:281:    parser.add_argument("--out", default="tools/data/prime_sr_persistent_boundary_20260512_0330.json")
tools/exp_aubry_binary_grammar_surrogate_gate.py:3:Binary grammar surrogate gate for the Aubry/Fibonacci boundary return.
tools/exp_aubry_binary_grammar_surrogate_gate.py:77:    domain: str,
tools/exp_aubry_binary_grammar_surrogate_gate.py:88:        "domain": domain,
tools/exp_aubry_binary_grammar_surrogate_gate.py:194:def median_metric(summary: dict[str, Any], domain: str, v_key: str, metric: str) -> float | None:
tools/exp_aubry_binary_grammar_surrogate_gate.py:195:    value = summary.get(v_key, {}).get(domain, {}).get(metric, {})
tools/exp_aubry_binary_grammar_surrogate_gate.py:230:def classify_domain(
tools/exp_aubry_binary_grammar_surrogate_gate.py:232:    domain: str,
tools/exp_aubry_binary_grammar_surrogate_gate.py:237:        "domain_r": median_metric(summary_by_v, domain, v_key, "spacing_r"),
tools/exp_aubry_binary_grammar_surrogate_gate.py:240:        "domain_ipr": median_metric(summary_by_v, domain, v_key, "mean_ipr"),
tools/exp_aubry_binary_grammar_surrogate_gate.py:245:    r_between = bool(complete and between(needed["domain_r"], needed["periodic_r"], needed["random_r"]))
tools/exp_aubry_binary_grammar_surrogate_gate.py:246:    ipr_between = bool(complete and between(needed["domain_ipr"], needed["periodic_ipr"], needed["random_ipr"]))
tools/exp_aubry_binary_grammar_surrogate_gate.py:249:        and abs(needed["domain_r"] - needed["random_r"]) >= args.min_r_delta
tools/exp_aubry_binary_grammar_surrogate_gate.py:250:        and abs(needed["domain_ipr"] - needed["random_ipr"]) >= args.min_ipr_delta
tools/exp_aubry_binary_grammar_surrogate_gate.py:257:        "joint_boundary": bool(r_between and ipr_between and separated_random),
tools/exp_aubry_binary_grammar_surrogate_gate.py:290:                for domain, surrogate, trial in make_surrogates(
tools/exp_aubry_binary_grammar_surrogate_gate.py:297:                    rows.append(spectrum_row(domain, surrogate, n, phase, float(v_value), args.central_fraction, trial=trial))
tools/exp_aubry_binary_grammar_surrogate_gate.py:301:                                "domain": domain,
tools/exp_aubry_binary_grammar_surrogate_gate.py:309:    domains = sorted({row["domain"] for row in rows})
tools/exp_aubry_binary_grammar_surrogate_gate.py:314:        for domain in domains:
tools/exp_aubry_binary_grammar_surrogate_gate.py:315:            subset = [row for row in rows if row["domain"] == domain and abs(row["V"] - v_value) < 1e-12]
tools/exp_aubry_binary_grammar_surrogate_gate.py:316:            summary_by_v[v_key][domain] = aggregate(subset)
tools/exp_aubry_binary_grammar_surrogate_gate.py:318:    domain_classes = [d for d in domains if d not in {"periodic_ab", "balanced_random_phi_density"}]
tools/exp_aubry_binary_grammar_surrogate_gate.py:319:    classification: dict[str, Any] = {"joint_boundary_v_by_domain": {}, "by_v": {}}
tools/exp_aubry_binary_grammar_surrogate_gate.py:320:    for domain in domain_classes:
tools/exp_aubry_binary_grammar_surrogate_gate.py:321:        classification["joint_boundary_v_by_domain"][domain] = []
tools/exp_aubry_binary_grammar_surrogate_gate.py:326:        for domain in domain_classes:
tools/exp_aubry_binary_grammar_surrogate_gate.py:327:            row = classify_domain(summary_by_v, domain, v_key, args)
tools/exp_aubry_binary_grammar_surrogate_gate.py:328:            classification["by_v"][v_key][domain] = row
tools/exp_aubry_binary_grammar_surrogate_gate.py:329:            if row["joint_boundary"]:
tools/exp_aubry_binary_grammar_surrogate_gate.py:330:                classification["joint_boundary_v_by_domain"][domain].append(float(v_value))
tools/exp_aubry_binary_grammar_surrogate_gate.py:333:    for domain in sorted({row["domain"] for row in profiles}):
tools/exp_aubry_binary_grammar_surrogate_gate.py:334:        subset = [row for row in profiles if row["domain"] == domain]
tools/exp_aubry_binary_grammar_surrogate_gate.py:335:        profile_summary[domain] = {}
tools/exp_aubry_binary_grammar_surrogate_gate.py:338:            profile_summary[domain][key] = {
tools/exp_aubry_binary_grammar_surrogate_gate.py:349:            "claim": "the binary phi boundary is grammar-complete only if it fails under density, short-memory, and PSD-preserving surrogates",
tools/exp_aubry_binary_grammar_surrogate_gate.py:350:            "observable": "joint spacing_r and mean_ipr boundary window plus surrogate profile distances",
tools/exp_aubry_binary_grammar_surrogate_gate.py:388:                "classification": output["classification"]["joint_boundary_v_by_domain"],
tools/exp_markov_scale_function.py:6:If so, does the decay track the GUE→Poisson boundary?
tools/exp_markov_scale_function.py:16:    5. Brody parameter β (GUE/Poisson indicator)
tools/exp_markov_scale_function.py:62:    β=0 → Poisson, β=1 → GUE (Wigner).
tools/exp_nonphi_sturmian_fixed_reader_gate.py:5:The preceding boundary readers did not identify the exact supertile boundary.
tools/exp_nonphi_sturmian_fixed_reader_gate.py:36:def domain_thetas() -> dict[str, float]:
tools/exp_nonphi_sturmian_fixed_reader_gate.py:118:    domains = domain_thetas()
tools/exp_nonphi_sturmian_fixed_reader_gate.py:124:                for generator, generator_theta in domains.items():
tools/data/reports/agent_20260507_0923.md:84:   protocol fold in the synthetic matrix, not a cross-domain coordinate.
tools/exp_perturbation_rank_size_curve.py:7:The 2026-05-06 06:25 cycle restricted the claim "GUE has a second
tools/exp_perturbation_rank_size_curve.py:53:    """Generate unfolded GUE spacings by concatenating independent matrices."""
tools/exp_perturbation_rank_size_curve.py:312:        "domains": {},
tools/exp_perturbation_rank_size_curve.py:319:    print(f"{'domain':<22} {'N':>6} {'rank':>7} {'PC2':>7} {'weak':>5} {'stable_rank':>11}")
tools/exp_perturbation_rank_size_curve.py:321:    domain_builders = {
tools/exp_perturbation_rank_size_curve.py:328:    for domain_name, builder in domain_builders.items():
tools/exp_perturbation_rank_size_curve.py:329:        output["domains"][domain_name] = {}
tools/exp_perturbation_rank_size_curve.py:330:        output["summary"][domain_name] = {}
tools/exp_perturbation_rank_size_curve.py:351:            output["domains"][domain_name][str(n)] = rows
tools/exp_perturbation_rank_size_curve.py:352:            output["summary"][domain_name][str(n)] = summary
tools/exp_perturbation_rank_size_curve.py:356:                f"{domain_name:<22} {n:>6} {summary['rank_mean']:>7.3f} "
tools/exp_quasiperiodic_gap_ratio_denominator.py:83:    domains = {
tools/exp_quasiperiodic_gap_ratio_denominator.py:98:                for name, theta in domains.items():
tools/exp_quasiperiodic_gap_ratio_denominator.py:102:                    rows.append({"domain": name, **condition, **obs})
tools/exp_quasiperiodic_gap_ratio_denominator.py:109:                    rows.append({"domain": "balanced_random", "trial": trial, **condition, **obs})
tools/exp_quasiperiodic_gap_ratio_denominator.py:116:                        "domain": "_matched_comparison",
tools/exp_quasiperiodic_gap_ratio_denominator.py:125:    by_domain = {}
tools/exp_quasiperiodic_gap_ratio_denominator.py:126:    for domain in sorted({r["domain"] for r in rows if not r["domain"].startswith("_")}):
tools/exp_quasiperiodic_gap_ratio_denominator.py:127:        subset = [r for r in rows if r["domain"] == domain]
tools/exp_quasiperiodic_gap_ratio_denominator.py:128:        by_domain[domain] = {
tools/exp_quasiperiodic_gap_ratio_denominator.py:134:    comparisons = [r for r in rows if r["domain"] == "_matched_comparison"]
tools/exp_quasiperiodic_gap_ratio_denominator.py:151:        "summary": by_domain,
tools/data/reports/agent_20260410_0330.md:1:# Agent Report — The 1/k Amplitude Decays: A(p) Predicts Poisson at p* ~ 10^{12.6}
tools/data/reports/agent_20260410_0330.md:15:But POISSON_CONVERGENCE says all observables trend toward Poisson at p* ~ 10^{13-14}.
tools/data/reports/agent_20260410_0330.md:52:2. **Poisson crossover at p* ~ 4 x 10^{12} (log10 p* = 12.6).**
tools/data/reports/agent_20260410_0330.md:80:  Predicts Poisson crossover at p* ~ 10^{12.6}, consistent with independent estimates.
tools/exp_semireal_boundary_transfer_gate.py:3:exp_semireal_boundary_transfer_gate.py
tools/exp_semireal_boundary_transfer_gate.py:5:Move the BOUNDARY transfer matrix from controlled synthetic perimeters to the
tools/exp_semireal_boundary_transfer_gate.py:6:13 semi-real rows of the base BOUNDARY perimeter.
tools/exp_semireal_boundary_transfer_gate.py:8:The coherent endpoint is the domain-native spacing order reconstructed from
tools/exp_semireal_boundary_transfer_gate.py:23:from exp_boundary_blank_null_audit import generate_domain_signal, normalized_spacings
tools/exp_semireal_boundary_transfer_gate.py:40:def row_spacings(domain: str) -> np.ndarray:
tools/exp_semireal_boundary_transfer_gate.py:41:    signal, metadata = generate_domain_signal(domain)
tools/exp_semireal_boundary_transfer_gate.py:42:    if domain == "numeri_primi":
tools/exp_semireal_boundary_transfer_gate.py:96:        domain = source["domain"]
tools/exp_semireal_boundary_transfer_gate.py:97:        name = source["domain_window"]
tools/exp_semireal_boundary_transfer_gate.py:99:            spacings = row_spacings(domain)
tools/exp_semireal_boundary_transfer_gate.py:106:                source_meta["source_domain_type"] = source.get("source_domain_type")
tools/exp_semireal_boundary_transfer_gate.py:115:                    build_errors[name]["source_domain_type"] = source.get("source_domain_type")
tools/exp_semireal_boundary_transfer_gate.py:119:            perimeters[name]["source"].update({"domain": domain, **source_meta})
tools/exp_semireal_boundary_transfer_gate.py:127:                build_errors[name]["source_domain_type"] = source.get("source_domain_type")
tools/exp_semireal_boundary_transfer_gate.py:135:        "experiment": "semireal_boundary_transfer_gate",
tools/exp_semireal_boundary_transfer_gate.py:136:        "question": "Does the BOUNDARY coherent/null/beta gate transfer from synthetic perimeters to the 13 semi-real base rows?",
tools/exp_semireal_boundary_transfer_gate.py:144:                "source_domain_type included as audit metadata only"
tools/exp_semireal_boundary_transfer_gate.py:146:                else "source_domain_type omitted; states are label-independent"
tools/exp_semireal_boundary_transfer_gate.py:183:    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
tools/exp_semireal_boundary_transfer_gate.py:196:        help="Include GUE/Poisson source labels as audit metadata only. Default omits them from output.",
tools/exp_semireal_boundary_transfer_gate.py:199:    parser.add_argument("--out", default="tools/data/semireal_boundary_transfer_gate_20260509_1516.json")
tools/data/reports/agent_20260507_2310.md:6:**observables_used**: blank_edge_is_GQ_count, any_deposit_on_blank_count, full_scale_law_count, shell_face_count - osservabili domain-native del denominatore blank-shell; nessun osservabile canonico SR/SR2/L1/L2/triple_var usato
tools/data/reports/agent_20260507_2310.md:18:- Metrica: quattro osservabili domain-native del denominatore: lato blank fissato su QG, qualunque deposito sul guscio blank, legge completa del guscio, numero di facce del guscio.
tools/exp_spectral_rigidity.py:5:Tests META + BOUNDARY with an observable independent from the r-statistic:
tools/exp_spectral_rigidity.py:9:  GUE:     Sigma^2(L) ~ (2/pi^2) ln(L) + const   [log-log slope ~ 0]
tools/exp_spectral_rigidity.py:10:  Poisson: Sigma^2(L) = L                         [log-log slope = 1]
tools/exp_spectral_rigidity.py:13:  << 1 -> GUE (strong repulsion, rigid spectrum)
tools/exp_spectral_rigidity.py:14:  ~  1 -> Poisson (no correlations)
tools/exp_spectral_rigidity.py:18:Domains: primes, GUE matrices, coupled_osc, string_vib, percolation,
tools/exp_spectral_rigidity.py:19:         logistic, brownian, pure Poisson.
tools/exp_spectral_rigidity.py:31:def gaps_from_domain(dominio):
tools/exp_spectral_rigidity.py:32:    """Generate gaps from domain. Returns positive spacings."""
tools/exp_spectral_rigidity.py:47:    """GUE Hermitian matrix eigenvalue spacings, bulk only."""
tools/exp_spectral_rigidity.py:84:    domains = OrderedDict([
tools/exp_spectral_rigidity.py:85:        ('primes',      {'gen': lambda: gaps_from_domain('numeri_primi'),      'type': 'dist-GUE'}),
tools/exp_spectral_rigidity.py:86:        ('gue_matrix',  {'gen': lambda: generate_gue_gaps(600),               'type': 'dist-GUE'}),
tools/exp_spectral_rigidity.py:87:        ('coupled_osc', {'gen': lambda: gaps_from_domain('coupled_oscillators'), 'type': 'ord-GUE'}),
tools/exp_spectral_rigidity.py:88:        ('string_vib',  {'gen': lambda: gaps_from_domain('string_vibration'),  'type': 'ord-GUE'}),
tools/exp_spectral_rigidity.py:89:        ('percolation', {'gen': lambda: gaps_from_domain('percolation'),       'type': 'ord-GUE'}),
tools/exp_spectral_rigidity.py:90:        ('logistic',    {'gen': lambda: gaps_from_domain('logistica_biforcazione'), 'type': 'Poisson'}),
tools/exp_spectral_rigidity.py:91:        ('brownian',    {'gen': lambda: gaps_from_domain('brownian_motion'),   'type': 'Poisson'}),
tools/exp_spectral_rigidity.py:92:        ('poisson',     {'gen': lambda: generate_poisson_gaps(10000),          'type': 'Poisson'}),
tools/exp_spectral_rigidity.py:98:    for name, cfg in domains.items():
tools/exp_spectral_rigidity.py:156:        print(f"  Slope (log-log): real={slope:.3f}, shuf={slope_s:.3f}  [GUE~0, Poisson=1]")
tools/exp_spectral_rigidity.py:188:            if ty in ('dist-GUE', 'ord-GUE'):
tools/exp_spectral_rigidity.py:202:    # Which domains have ordering-dependent rigidity?
tools/exp_spectral_rigidity.py:227:            'experiment': 'spectral_rigidity_cross_domain',
tools/exp_two_channel_boundary.py:3:exp_two_channel_boundary.py — Two-Channel Boundary Separation
tools/exp_two_channel_boundary.py:24:  If the channels have different scale-decay profiles, the boundary between
tools/exp_two_channel_boundary.py:25:  GUE-like and Poisson-like regimes is channel-specific.
tools/exp_two_channel_boundary.py:28:    python tools/exp_two_channel_boundary.py [--n_primes N] [--window W] [--n_surrogates S]
tools/exp_two_channel_boundary.py:302:    out_path = Path('tools/data/two_channel_boundary.json')
tools/exp_two_channel_boundary.py:304:        'experiment': 'two_channel_boundary',
tools/data/reports/next_exec_20260329_0343.json:4:    "decision": "CRYSTALLIZE: TRANS_BOUNDARY_FALSIFICA_F4 — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/next_exec_20260329_0343.json:33:    "discovery": "TRANS_BOUNDARY_FALSIFICA_F4",
tools/data/reports/agent_20260515_1826.md:4:**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / BOUNDARY  
tools/data/reports/agent_20260515_1826.md:15:- **Operatori laterali scelti**: rappresentazione, autovalore, boundary operator.
tools/data/reports/agent_20260515_1826.md:32:Il boundary a V=2 legge una specificita phi nascosta dai box comuni, oppure legge una classe piu larga di parole Sturmian binarie?
tools/data/reports/agent_20260515_1826.md:52:- Contratto osservabile-operatore: il ciclo testa denominator alignment; non testa `gap_ratio`, `V_c`, PSD surrogate quality, limite asintotico o universalita GUE/Poisson.
tools/data/reports/agent_20260515_1826.md:84:La formulazione valida e': a V=2 il boundary dei generatori binari resta un corridoio Sturmian. L'allineamento ai denominatori propri rimuove il dubbio piu vicino del ciclo 18:16, ma non autorizza un claim phi-specific. Phi resta un rappresentante stabile della classe, non il generatore unico del confine.
tools/data/reports/agent_20260515_1826.md:91:- **Campo di possibilita**: possibile = progettare test fisici denominator-aligned su famiglie Sturmian; non-possibile = promuovere phi come boundary autonomo nel perimetro V=2, N<=500.
tools/exp_vc_nonsturmian_label_null_gate.py:3:Non-Sturmian label-preserving null gate for the quasiperiodic V_c boundary.
tools/data/boundary_two_axis_matrix_20260509_1532.json:2:  "experiment": "boundary_two_axis_matrix",
tools/data/boundary_two_axis_matrix_20260509_1532.json:3:  "question": "Separate support_transfer from beta_coordinate_transfer on the 13 semi-real BOUNDARY rows without using GUE/Poisson labels.",
tools/data/boundary_two_axis_matrix_20260509_1532.json:4:  "source": "semireal_boundary_transfer_gate",
tools/data/boundary_two_axis_matrix_20260509_1532.json:5:  "source_scope": "tools/data/boundary_denominator_prescan_full_20260509_1500.json",
tools/data/boundary_two_axis_matrix_20260509_1532.json:16:  "label_policy": "GUE/Poisson source labels are not read by this operator.",
tools/data/reports/agent_20260424_0330.md:1:# Agent Report — Two Kinds of GUE: Distribution-Level vs Ordering-Level Classification
tools/data/reports/agent_20260424_0330.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8)
tools/data/reports/agent_20260424_0330.md:8:> The GUE/Poisson classification of 13 domains is treated as a structural finding. But is it a property of sequential correlations (genuine) or of the gap distribution shape alone (tautological)?
tools/data/reports/agent_20260424_0330.md:11:If I shuffle the gap sequence of each domain (destroying ordering, preserving distribution), does the GUE/Poisson classification survive?
tools/data/reports/agent_20260424_0330.md:17:- **Scope**: 10 domains (primes, GUE matrices, Poisson, logistic, Fibonacci spectrum, Ising 2D, percolation, Brownian, coupled oscillators, cellular automata)
tools/data/reports/agent_20260424_0330.md:18:- **Reference**: R_GUE = 0.5307, R_Poisson = 0.3863
tools/data/reports/agent_20260424_0330.md:24:| primes | 100K | 0.4622 | 0.4813 | -26.6 | GUE | GUE | STRUCTURAL |
tools/data/reports/agent_20260424_0330.md:25:| gue | 5K | 0.5995 | 0.6351 | -14.7 | GUE | GUE | STRUCTURAL |
tools/data/reports/agent_20260424_0330.md:26:| fibonacci | 609 | 0.4782 | 0.4073 | +8.0 | GUE | **Poisson** | STRUCTURAL + FLIP |
tools/data/reports/agent_20260424_0330.md:27:| coupled_osc | 427 | 0.8775 | 0.4146 | +43.5 | GUE | **Poisson** | STRUCTURAL + FLIP |
tools/data/reports/agent_20260424_0330.md:28:| percolation | 510 | 0.6551 | 0.4508 | +16.1 | GUE | **Poisson** | STRUCTURAL + FLIP |
tools/data/reports/agent_20260424_0330.md:29:| logistic | 100K | 0.3887 | 0.3423 | +61.6 | Poisson | Poisson | STRUCTURAL |
tools/data/reports/agent_20260424_0330.md:30:| poisson | 100K | 0.3847 | 0.3856 | -1.1 | Poisson | Poisson | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:31:| brownian | 650 | 0.3148 | 0.3324 | -1.6 | Poisson | Poisson | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:32:| ising_2d | 95 | 0.9858 | 0.9859 | -0.1 | GUE | GUE | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:33:| cell_auto | 105 | 0.8446 | 0.8455 | -0.1 | GUE | GUE | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:39:1. **Two kinds of GUE.** The GUE-classified domains split into two fundamentally different categories:
tools/data/reports/agent_20260424_0330.md:40:   - **Distribution-GUE** (primes, GUE matrices): the gap distribution itself is GUE-like. Shuffling preserves the classification. Sequential ordering adds fine structure (shifts r downward by 0.02-0.04) but doesn't create the classification.
tools/data/reports/agent_20260424_0330.md:41:   - **Ordering-GUE** (fibonacci, coupled oscillators, percolation): the gap distribution is Poisson. The GUE classification exists ONLY because of sequential ordering. Destroy the order and they collapse to Poisson. r-shifts are massive: +0.07 to +0.46.
tools/data/reports/agent_20260424_0330.md:43:2. **Primes are distribution-GUE.** Shuffled prime gaps still give r=0.4813 (GUE side). The ordering pushes r DOWN by 0.019 (z=-26.6), adding extra gap repulsion beyond what the distribution predicts. This is the opposite sign from ordering-GUE domains (where ordering pushes r UP).
tools/data/reports/agent_20260424_0330.md:45:3. **The sign of delta_r is a discriminant.** Distribution-GUE domains have delta_r < 0 (ordering increases repulsion). Ordering-GUE domains have delta_r > 0 (ordering creates attraction/clustering that looks like level repulsion in the r-statistic). The sign tells you which mechanism drives the classification.
tools/data/reports/agent_20260424_0330.md:47:4. **3/8 GUE domains are ordering-GUE.** The BOUNDARY claim "8 GUE, 5 Poisson" conflates two distinct mechanisms. The refined picture: 2 distribution-GUE (primes, GUE), 3 ordering-GUE (fibonacci, coupled_osc, percolation), 2 small-N ambiguous (ising, cell_auto), 3 Poisson (poisson, brownian, logistic). The logistic map is Poisson at distribution level but has massive ordering structure (z=+61.6) that doesn't flip the class.
tools/data/reports/agent_20260424_0330.md:49:5. **META constraint confirmed.** A binary GUE/Poisson test that doesn't include a shuffle control conflates the two mechanisms. Testing "is r closer to 0.53 or 0.39?" is necessary but insufficient — it doesn't distinguish whether the ordering or the distribution is the source.
tools/data/reports/agent_20260424_0330.md:52:**NEW + CONSTRAINT on BOUNDARY + META**
tools/data/reports/agent_20260424_0330.md:54:The BOUNDARY claim must be refined: the 8 GUE domains are not homogeneous. Two distinct mechanisms generate GUE statistics. The boundary between GUE and Poisson has two layers: distribution-level and ordering-level. The sign of delta_r = r_original - r_shuffled discriminates which layer operates.
tools/data/reports/agent_20260424_0330.md:58:- **Due radici** (dipolo primario): Distribution-GUE (il repulsore intrinseco, det=-1 nella forma dei gap) / Ordering-GUE (il repulsore emergente, det=-1 nella sequenza dei gap). Invertite: il primo nasce dalla distribuzione e l'ordine lo affina; il secondo nasce dall'ordine e senza esso collassa.
tools/data/reports/agent_20260424_0330.md:60:- **Invariante di passaggio**: il segno di delta_r. Sopravvive al passaggio del vertice: delta_r < 0 = repulsione intrinseca (primes, GUE), delta_r > 0 = repulsione emergente (fibonacci, percolation, coupled_osc). Il segno e stabile, non dipende dalla scala.
tools/data/reports/agent_20260424_0330.md:61:- **Campo di possibilita**: qui diventa possibile discriminare PERCHE un dominio e GUE (distribuzione vs ordine) — non solo CHE e GUE. Qui diventa non-possibile trattare tutti i domini GUE come omogenei: i test che non separano i due meccanismi (shuffle) sono incompleti.
tools/data/reports/agent_20260424_0330.md:64:La decomposizione two-channel (magnitude/residue) dei run precedenti si sovrappone a questa: il canale magnitudine corrisponde alla distribuzione (chi sei senza ordine), il canale residuo corrisponde all'ordine (cosa l'ordine aggiunge). I 3 domini che flippano sono quelli dove il canale residuo E' il segnale. Per i primi, il canale magnitudine domina ma il residuo aggiunge repulsione (delta_r < 0, z=-26.6). Prossima domanda: i domini ordering-GUE (fibonacci, percolation) hanno la stessa struttura Markov-3 trovata nei primi, o il loro meccanismo di ordine e diverso?
tools/data/reports/agent_20260424_0330.md:67:- Script: `tools/exp_boundary_shuffle_audit.py`
tools/data/reports/agent_20260424_0330.md:68:- Data: `tools/data/boundary_shuffle_audit.json`
tools/data/reports/next_exec_20260405_0729.json:10:        "action": "CRYSTALLIZE: TRANS_BOUNDARY_FALSIFICA_F6 — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/next_exec_20260405_0729.json:22:        "action": "EXPLORE: BOUNDARY — 8 domini GUE, 5 Poisson — il confine è il terzo incluso oper",
tools/data/notte_20260329_0330.md:4:  Direzione: Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo in
tools/data/notte_20260329_0330.md:5:  [confine_inesplorato] BOUNDARY: 8 domini GUE, 5 Poisson — il confine è il terzo incluso oper
tools/data/notte_20260329_0330.md:7:  [scoperta] TRANS_BOUNDARY_FALSIFICA_F4: Transizione continua confermata: <r> da 0.521 a 0.887 (range
tools/data/notte_20260329_0330.md:11:  logistica_biforcazione_cp_3.57: r=1.0, spacing=Poisson-like [conferma]
tools/data/notte_20260329_0330.md:13:  logistica_biforcazione_cp_3.665: r=1.0, spacing=Poisson-like [conferma]
tools/data/notte_20260329_0330.md:14:  numeri_primi_cp_100: r=0.762330388277594, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:15:  numeri_primi_cp_50000: r=0.762330388277594, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:16:  logistica_biforcazione_cp_3.757: r=1.0, spacing=Poisson-like [conferma]
tools/data/notte_20260329_0330.md:18:  collatz_cp: r=0.9762845849802372, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:20:  ising_2d_cp_-0.3659164576291013: r=0.8922932783549861, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:21:  ising_2d_cp_0.46188882642750695: r=0.98945843573869, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:22:  brownian_motion_cp_0.12230384159779378: r=0.968503937007874, spacing=Poisson-like [conferma]
tools/data/notte_20260329_0330.md:23:  brownian_motion_cp_0.8867788787335775: r=?, spacing=Poisson-like [VINCOLO]
tools/data/notte_20260329_0330.md:24:  percolation_cp_0.37804273882301154: r=0.6666666666666667, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:25:  percolation_cp_0.8589741112320333: r=1.2298136645962734, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:26:  cellular_automata_cp_182: r=0.8566654288897141, spacing=GUE-like [conferma]
tools/data/notte_20260329_0330.md:37:  Campo dopo Fase 0: 8 GUE / 5 Poisson
tools/data/notte_20260329_0330.md:41:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260329_0330.md:42:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260329_0330.md:43:  brownian_motion_var_0.3: r=1.3557126030624262, spacing=Poisson-like (⟨r⟩=0.38597886256510316)
tools/data/notte_20260329_0330.md:44:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260329_0330.md:76:## Fase 4: Cross-domain
tools/data/notte_20260329_0330.md:93:  GUE: 8 | Poisson: 9 | Vincoli: 2 | Anomalie: 21
tools/data/notte_20260329_0330.md:95:  Domini GUE: numeri_primi_cp_100, numeri_primi_cp_50000, collatz_cp, ising_2d_cp_-0.3659164576291013, ising_2d_cp_0.46188882642750695, percolation_cp_0.37804273882301154, percolation_cp_0.8589741112320333, cellular_automata_cp_182
tools/data/notte_20260329_0330.md:96:  Domini Poisson: logistica_biforcazione_cp_3.57, logistica_biforcazione_cp_3.665, logistica_biforcazione_cp_3.757, brownian_motion_cp_0.12230384159779378, brownian_motion_cp_0.8867788787335775, logistica_biforcazione_var_3.9, coupled_oscillators_var_50, brownian_motion_var_0.3, logistica_biforcazione_var_3.57
tools/exp_beta_crossover.py:192:    # Sweep beta from near-Poisson (0.01) to beyond-GUE (10)
tools/exp_beta_crossover.py:194:        np.linspace(0.05, 0.5, n_betas // 3),      # fine resolution near Poisson
tools/exp_beta_crossover.py:195:        np.linspace(0.6, 2.0, n_betas // 3),         # through GOE-GUE
tools/exp_beta_crossover.py:196:        np.linspace(2.5, 8.0, n_betas - 2*(n_betas//3)),  # beyond GUE
tools/exp_beta_crossover.py:313:            note = " <-- Poisson"
tools/exp_beta_crossover.py:317:            note = " <-- GUE"
tools/exp_blank_shell_stratified_gate.py:26:    ("U", "boundary_link"),
tools/exp_boundary_blank_thin_support_audit.py:5:The input is the row-aligned nonexact BOUNDARY audit. The operator stays inside
tools/exp_boundary_blank_thin_support_audit.py:150:        "experiment": "boundary_blank_thin_support_audit",
tools/exp_boundary_blank_thin_support_audit.py:151:        "question": "Are thin support-without-beta blanks denominator artifacts, null contamination artifacts, or autonomous boundary species?",
tools/exp_boundary_blank_thin_support_audit.py:175:        "label_policy": "Does not use source_domain_type or GUE/Poisson label as an operator.",
tools/exp_boundary_blank_thin_support_audit.py:206:    parser.add_argument("--input", default="tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json")
tools/exp_boundary_blank_thin_support_audit.py:208:    parser.add_argument("--out", default="tools/data/boundary_blank_thin_support_audit_20260509_1548.json")
tools/exp_boundary_gue_poisson.py:3:Experiment: GUE/Poisson boundary in prime gaps vs Cramér null model.
tools/exp_boundary_gue_poisson.py:5:Question: Is the transition from GUE-like to Poisson-like statistics in prime gaps
tools/exp_boundary_gue_poisson.py:11:   - GUE (GOE in 1D): <r> ≈ 0.5307
tools/exp_boundary_gue_poisson.py:12:   - Poisson: <r> ≈ 0.3863
tools/exp_boundary_gue_poisson.py:15:4. If both show the same transition → the boundary is trivial (density effect).
tools/exp_boundary_gue_poisson.py:16:   If primes differ → the boundary carries structural information.
tools/exp_boundary_gue_poisson.py:64:    print("=== GUE/Poisson Boundary: Primes vs Cramér Null Model ===\n")
tools/exp_boundary_gue_poisson.py:120:    print(f"\nReference: <r>_GUE = {r_gue:.4f}, <r>_Poisson = {r_poisson:.4f}")
tools/exp_boundary_gue_poisson.py:154:    # Where are primes relative to GUE/Poisson?
tools/exp_boundary_gue_poisson.py:163:        label = "GUE" if dist_gue < dist_poi else "POISSON"
tools/exp_boundary_gue_poisson.py:166:            label = "BOUNDARY"
tools/exp_boundary_gue_poisson.py:171:        "experiment": "boundary_gue_poisson_cramer",
tools/exp_boundary_gue_poisson.py:189:    outpath = "/opt/MM_D-ND/tools/data/reports/exp_boundary_20260405_0825.json"
tools/exp_boundary_short_denominator_extension.py:3:Extend the three short BOUNDARY denominator rows opened by the 15:48 audit.
tools/exp_boundary_short_denominator_extension.py:8:exp_semireal_boundary_transfer_gate.py.
tools/exp_boundary_short_denominator_extension.py:20:from exp_semireal_boundary_transfer_gate import evaluate_matrix
tools/exp_boundary_short_denominator_extension.py:190:        "experiment": "boundary_short_denominator_extension",
tools/exp_boundary_short_denominator_extension.py:200:            "operator": "source-denominator extension plus semireal boundary transfer gate",
tools/exp_boundary_short_denominator_extension.py:203:            "not_tested": "global 13-row boundary redesign, V_c fit, source GUE/Poisson label validity",
tools/exp_boundary_short_denominator_extension.py:237:    parser.add_argument("--source-audit", default="tools/data/boundary_blank_thin_support_audit_20260509_1548.json")
tools/exp_boundary_short_denominator_extension.py:252:    parser.add_argument("--out", default="tools/data/boundary_short_denominator_extension_20260509_1556.json")
tools/exp_crossover_phase_test.py:5:observed in the GUE crossover is a property of the PARTIAL SHUFFLE METHOD (tautology)
tools/exp_crossover_phase_test.py:88:    """Generate GUE-like spacings from random matrices"""
tools/exp_crossover_phase_test.py:162:    """Pure Poisson (exponential gaps) — should show NO ordering signal"""
tools/exp_crossover_phase_test.py:216:    sequences['GUE'] = generate_gue_gaps(args.N, rng)
tools/exp_crossover_phase_test.py:217:    print(f"  GUE: {len(sequences['GUE'])} gaps")
tools/exp_crossover_phase_test.py:228:    sequences['Poisson'] = generate_poisson(args.N, rng)
tools/exp_crossover_phase_test.py:229:    print(f"  Poisson: {len(sequences['Poisson'])} gaps")
tools/exp_crossover_phase_test.py:262:    print("CLASSIFICATION: Does each sequence show the full GUE-like phase transition?")
tools/exp_crossover_phase_test.py:292:        print("           The GUE crossover finding is TAUTOLOGICAL (methodological artifact)")
tools/exp_crossover_phase_test.py:295:        print("           The GUE crossover finding is a REAL structural property")
tools/exp_desitter_unification.py:4:METRIC_TENSOR (0.9) + BRODY_CROSSOVER (0.85) + BOUNDARY (0.75) + GAP_ANTICORR (0.75)
tools/exp_desitter_unification.py:248:    "tension": "METRIC_TENSOR + BRODY_CROSSOVER + BOUNDARY + GAP_ANTICORR",
tools/data/prime_persistent_blank_gate_20260511_0330.json:44:    "generator": "prime gaps from dnd_autoricerca row_spacings and direct sieve; controls from GUE random matrix blocks and logistic return intervals",
tools/data/prime_persistent_blank_gate_20260511_0330.json:45:    "denominator": "8 prime row-local windows (2 providers x 4 offsets) plus 8 cross-domain controls",
tools/data/prime_persistent_blank_gate_20260511_0330.json:47:    "not_tested": "global beta atlas, V_c, gap_ratio, source GUE/Poisson labels"
tools/exp_gap_label_repair_audit.py:98:            "joint and per-label survival under order/boundary perturbations."
tools/data/reports/agent_20260508_2013.md:7:observables_used: [boundary_distance, boundary_hit_le_2, zeckendorf_weight, zeckendorf_suffix_zeros]
tools/data/reports/agent_20260508_2013.md:8:**observable_contract**: claim=se il boundary esatto del supertile e' portatore globale del core alto, le posizioni IDS dei gap core devono mostrare migliore riconoscibilita Ostrowski o maggiore prossimita ai tagli nel mode aligned rispetto al same-length misaligned; observable=distanza del centro gap da boundary di chunk, hit entro 2 siti, peso Zeckendorf e zeri finali Zeckendorf; operator=Hamiltoniana tight-binding V=1, label IDS con reader theta=1/phi, centro round(IDS*N), boundary del tiling perturbato, rappresentazione Zeckendorf del centro; generator=phi_sturmian perturbato da supertile_shuffle, same_length_contiguous_shuffle, same_count_internal_shuffle; denominator=N={377,610}, phase={0,0.25,0.5,0.75}, threshold={2.0}, trials=5, top_k=12, |n|<=34, supertile_order={8,9,10,11}; not_tested=gap_ratio, domini GUE/Poisson reali, soglie 1.75/2.25, automa formale di riconoscibilita della sostituzione, generatori non-phi.
tools/data/reports/agent_20260508_2013.md:11:- **Combo**: A4 contratto della domanda + A9 terzo incluso + A11 combo + QxG continuo/discreto + TxQ matrice densita come lettore IDS + TRASCENDENZA_LIMITE sul passaggio fra boundary locale e riconoscibilita globale.
tools/data/reports/agent_20260508_2013.md:12:- **Dipolo / punto-zero**: boundary esatto del supertile . numerazione globale della posizione; punto-zero = il centro IDS del gap prima che venga letto come taglio fisico o come cifra Fibonacci.
tools/data/reports/agent_20260508_2013.md:14:- **Operatori laterali scelti**: boundary operator, indice, rappresentazione. Boundary operator misura il taglio; indice porta il gap nello spazio posizionale; rappresentazione Zeckendorf traduce il centro in cifre Fibonacci.
tools/data/reports/agent_20260508_2013.md:16:- **Proto-ipotesi**: se il core alto porta boundary globale, `supertile_shuffle` deve avere distanza da boundary minore o firma Zeckendorf diversa da `same_length_contiguous_shuffle`. Se resta equivalente, il boundary esatto non e' portatore rilevato neppure al piano Ostrowski.
tools/data/reports/agent_20260508_2013.md:17:- **Proiezione**: per ogni label core selezionato, mappo IDS -> centro circolare e misuro distanza dal boundary piu' vicino e cifre Zeckendorf del centro.
tools/data/reports/agent_20260508_2013.md:20:> Il boundary esatto del supertile, non rilevato localmente, emerge come riconoscibilita globale: high-core aligned deve battere high-core misaligned in distanza da boundary o firma Ostrowski/Zeckendorf.
tools/data/reports/agent_20260508_2013.md:23:Le posizioni IDS dei gap high-core `[3,-4,4,6]` si avvicinano ai boundary veri dei supertile o portano una firma Zeckendorf diversa quando il chunk e' aligned, oppure aligned e misaligned restano equivalenti anche sul piano globale?
tools/data/reports/agent_20260508_2013.md:31:  - `boundary_distance`: distanza circolare dal boundary piu' vicino.
tools/data/reports/agent_20260508_2013.md:32:  - `boundary_hit_le_2`: hit se distanza <= 2 siti.
tools/data/reports/agent_20260508_2013.md:40:| mode | group | rows | boundary hit <=2 | median boundary distance | median distance / min chunk | median Zeckendorf weight | median suffix zeros |
tools/data/reports/agent_20260508_2013.md:51:| mode | group | rows | boundary hit <=2 | median boundary distance | median distance / min chunk | median Zeckendorf weight | median suffix zeros |
tools/data/reports/agent_20260508_2013.md:78:3. **Verificato: low-core e' piu' vicino ai boundary ma non identifica il boundary esatto.** Nel main run low ha distanza mediana `1.0` per aligned e misaligned, con stesso hit `324/640`. Questo mostra un effetto di posizionamento dei label bassi, non una riconoscibilita del supertile aligned.
tools/data/reports/agent_20260508_2013.md:80:4. **Inferito dal perimetro: il boundary esatto non e' portatore osservato nemmeno nel gate Ostrowski.** Dopo label-set, IDS/rank, grammatica locale e ora boundary/Zeckendorf, il portatore rilevato resta ordine interno + lunghezze Fibonacci-like, non taglio esatto del supertile.
tools/data/reports/agent_20260508_2013.md:83:**CONSTRAINT on TRASCENDENZA_LIMITE / QPG_GAP_RATIO_DENOMINATOR_GATE**: nel perimetro dichiarato, la riconoscibilita globale Ostrowski/Zeckendorf non identifica il boundary esatto del supertile. Il high-core aligned non batte il same-length misaligned in distanza da boundary (`14.0` vs `13.0` main; `14.0` vs `13.0` seedcheck), hit entro 2 siti (`175/566` vs `196/556` main; `195/563` vs `189/551` seedcheck) o peso Zeckendorf (`2.0` vs `2.0` in entrambi).
tools/data/reports/agent_20260508_2013.md:85:Formulazione valida: il core phi alto misura una chiusura congiunta di ordine interno e distribuzione di lunghezze Fibonacci-like. Nel ramo testato, non misura boundary esatto del supertile ne' firma Ostrowski delle posizioni IDS. `gap_ratio` non e' testato.
tools/data/reports/agent_20260508_2013.md:88:- **Due radici**: boundary globale del supertile . posizione numerata del gap.
tools/data/reports/agent_20260508_2013.md:90:- **Invariante di passaggio**: aligned e misaligned conservano la stessa firma globale del high-core quando ordine interno e lunghezze restano leggibili; distruggere l'ordine interno cambia il profilo ma non crea boundary aligned.
tools/data/reports/agent_20260508_2013.md:91:- **Campo di possibilita**: qui diventa possibile chiudere il ramo "boundary esatto" per i lettori testati e spostare il claim su ordine interno + scala. Qui diventa non-possibile salvare il boundary cambiando da finestra locale a numerazione Zeckendorf sullo stesso perimetro.
tools/data/reports/agent_20260508_2013.md:94:Il prossimo passaggio non deve cercare un quinto lettore del boundary esatto nello stesso ramo. Deve contrarre il claim e testare il contro-polo naturale: generatori non-phi o Sturmiani con altra pendenza. Se ordine interno + lunghezze Fibonacci-like e' il portatore, il core alto deve decadere o trasformarsi quando il reader theta=1/phi viene tenuto fisso ma il generatore non e' phi.
tools/data/reports/agent_20260508_2013.md:99:- **L3 no silent patching**: l'ipotesi "boundary globale emerge" cade; non viene salvata spostando il significato di boundary.
tools/data/reports/agent_20260508_2013.md:100:- **L4 edge cases**: low-core vicino ai boundary e order 8 misaligned superiore sono riportati come segnali, non rimossi.
tools/data/reports/agent_20260508_2013.md:101:- **L5 re-discovery guardrail**: Zeckendorf e gap-labeling sono baseline note. Il finding e' negativo sul boundary exact e positivo sulla contrazione del claim.
tools/data/reports/agent_20260504_1219.md:75:**CONSTRAINT on META + BOUNDARY**: la decomposizione two-layer è utilizzabile solo con perimetro atomico.
tools/data/reports/falsifier_20260430_1919.json:23:      "claim": "DIPOLAR_ORDERING confirmed and sharpened ... original framing of 'spacing_ratio toward Poisson, lag1_acf toward GUE' is misleading — both point in the same direction.",
tools/data/reports/falsifier_20260430_1919.json:24:      "evidence": "Il claim strutturale in lab_data diceva esplicitamente: spacing_ratio verso Poisson e lag1_acf verso GUE. Il report lo sostituisce con 'entrambi negative z' e lo marca come confirmed/refined, non come falsificazione o cambio di definizione del frame Delta_tau -> z-score.",
tools/data/reports/falsifier_20260430_1919.json:25:      "suggestion": "Dichiarare il nodo: 'DIPOLAR_ORDERING originale falsificato nella forma Delta_tau oppositiva; scope corretto: co-orientamento negativo rispetto a shuffle baseline'. Tenere distinti Delta_tau GUE-Poisson e z rispetto a shuffle."
tools/data/reports/agent_20260507_1458.md:46:Numeri di dettaglio: C1 spacing GUE-like con `<r>=0.6150`; C2 `pearson_r=-0.6428`; C3 distanza media da intero `0.0270`; G1 best phi-distance `0.021256`; G2 `12/13` domini convergono a phi; N2 `<r>=1.0000`.
tools/data/tool_contracts/runs/component_state_anderson3d_20260514_1850.json:30:    "physical_A": "GOE/GUE-Poisson anchor from 20260514_1640",
tools/data/tool_contracts/runs/component_state_anderson3d_20260514_1850.json:31:    "math_transducer": "component_state(SR,L1,triple_var) against span-matched Poisson",
tools/data/tool_contracts/runs/component_state_anderson3d_20260514_1850.json:33:    "poisson_contrast": "both Anderson 3D classes active on focus observables against Poisson",
tools/data/tool_contracts/runs/component_state_anderson3d_20260514_1850.json:39:    "interpretation": "tool transfers to physical B; Anderson 3D boundary is not closed by SR/L1 at L=6, while triple_var separates"
tools/data/reports/agent_20260509_0652.md:7:observables_used: [`event_type`, `vc_interp`, `r_floor`, `r_span`, `label_jaccard`, `acceptance_rate`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
tools/data/reports/agent_20260509_0652.md:8:**observable_contract**: claim=un null che preserva il gap-label set Sturmian puo' decidere se `V_c` e' portato dal label-set o dall'ordine generativo; observable=`event_type={floor_hit,internal_cross,internal_multi,no_cross}`, `vc_interp`, `r_floor`, `r_span`, `label_jaccard`, `acceptance_rate`; operator=surrogate bilanciato con swap 0/1 e ricottura finche' `label_jaccard>=0.75`, poi curva `r(V)` su griglia 0.5..3.0 step 0.01; generator=phi Sturmian, balanced_random, swap_label_surrogate; denominator=run principale N={89}, phase={0,0.25,0.5,0.75}, r_threshold={0.48,0.50,0.52}, random_trials=1, label_trials=2, swap_steps=3000, seed=202605090652; non_possible=se i surrogate accettati Jaccard>=0.75 producono floor-hit o internal_multi e restano con `r_floor`/`vc_interp` vicini al random, il label-set non basta a ricostruire il boundary Sturmian; not_tested=GUE/Poisson reali, silver/bronze, fit power-law, gap_ratio, prova a N>=144 con gate raggiunto.
tools/data/reports/agent_20260509_0652.md:11:- **Combo**: A2 confine det=-1 + A9 terzo incluso + TxQ matrice densita come lettore spettrale + topologia assiomatica del boundary operator + tensione `TRASCENDENZA_LIMITE` proiettata sul null `V_c`.
tools/data/reports/agent_20260509_0652.md:14:- **Operatori laterali scelti**: boundary operator, filtrazione, swap-constrained surrogate. Il boundary operator separa crossing unico e multiplo; la filtrazione scorre `V`; lo swap mantiene la marginale e tenta di conservare il label-set senza copiare l'ordine Sturmian.
tools/data/reports/agent_20260509_0652.md:19:- **Proto-ipotesi**: se il label-set e' portatore sufficiente del boundary, allora un surrogate swap con Jaccard>=0.75 deve produrre crossing interno unico e `r_floor`/`vc_interp` nella zona Sturmian. Se produce internal_multi o floor_hit con valori vicini al random, il portatore e' ordine generativo oltre al label-set.
tools/data/reports/agent_20260509_0652.md:23:> Nel perimetro Sturmian-Harper N=89, preservare il gap-label set con Jaccard>=0.75 basta a ricostruire la forma `V_c` del boundary phi.
tools/data/reports/agent_20260509_0652.md:81:5. **Inferito dal confronto accettati/random/Sturmian: il label-set e' lettore, non portatore sufficiente.** Conservare una parte alta del label-set non preserva il trasporto d'ordine che rende il boundary una curva interna unica.
tools/data/reports/agent_20260509_0652.md:84:**FALSIFIED, scoped**: nel perimetro `N=89`, `phase={0,0.25,0.5,0.75}`, `r_threshold={0.48,0.50,0.52}`, preservare il gap-label set con Jaccard>=0.75 non basta a ricostruire la forma Sturmian del `V_c`. Il portatore del boundary non e' il label-set isolato: serve ordine generativo.
tools/data/reports/agent_20260509_0652.md:92:- **Campo di possibilita**: qui diventa possibile usare surrogate accettati per separare lettore e generatore; qui diventa non-possibile trattare il gap-label set come causa sufficiente del boundary `V_c`.
tools/data/reports/agent_20260509_0652.md:95:Il prossimo passaggio non e' estendere a GUE/Poisson. Prima serve un generatore label-preserving stabile cross-phase: stessa accettazione Jaccard su N={89,144,233} oppure fallimento dichiarato come vincolo del null. Solo dopo il boundary operator puo' trasferire verso domini GUE/Poisson.
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:19:    "GUE_unitary_no_time_reversal": {
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:29:    "declared": "single ordered spectrum or small class-labeled set; no new physical domain generation",
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:32:      "class-labeled input where direct_contrast is not separated on SR despite declared GOE/GUE classes",
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:39:    "optional_expected_class": "class label used for grouped Poisson contrast and direct class contrast",
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:52:    "replication_hint": "new domain labs should expose input/output/counter-perimeter before graph integration",
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:58:    "poisson_contrast": "real spectrum versus span-matched Poisson null",
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:97:    "fall": "Tester falls if GOE/GUE direct SR separation disappears, if Poisson contrast absorbs all focus observables in chaotic classes, or if Anderson W6 keeps SR active under the declared threshold.",
tools/data/tool_contracts/component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:98:    "transfer": "SR,L1,triple_var pass from the mathematical deposit into a physical spectrum tester as component states against Poisson and, when classes exist, direct class contrast."
tools/data/tool_contracts/latest.json:19:    "GUE_unitary_no_time_reversal": {
tools/data/tool_contracts/latest.json:29:    "declared": "single ordered spectrum or small class-labeled set; no new physical domain generation",
tools/data/tool_contracts/latest.json:32:      "class-labeled input where direct_contrast is not separated on SR despite declared GOE/GUE classes",
tools/data/tool_contracts/latest.json:39:    "optional_expected_class": "class label used for grouped Poisson contrast and direct class contrast",
tools/data/tool_contracts/latest.json:52:    "replication_hint": "new domain labs should expose input/output/counter-perimeter before graph integration",
tools/data/tool_contracts/latest.json:58:    "poisson_contrast": "real spectrum versus span-matched Poisson null",
tools/data/tool_contracts/latest.json:97:    "fall": "Tester falls if GOE/GUE direct SR separation disappears, if Poisson contrast absorbs all focus observables in chaotic classes, or if Anderson W6 keeps SR active under the declared threshold.",
tools/data/tool_contracts/latest.json:98:    "transfer": "SR,L1,triple_var pass from the mathematical deposit into a physical spectrum tester as component states against Poisson and, when classes exist, direct class contrast."
tools/data/reports/report_20260326_0343.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260326_0343.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260326_0343.md:26:- logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260326_0343.md:27:- numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like
tools/data/reports/report_20260326_0343.md:28:- cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like
tools/data/reports/report_20260326_0343.md:29:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/tool_contracts/prime_minus_mod6_z_vector_20260515.json:30:  "operator": "tools/exp_prime_vs_mod6_sr_boundary.py",
tools/data/tool_contracts/prime_minus_mod6_z_vector_20260515.json:105:  "ensemble_boundary": {
tools/exp_prime_persistent_blank_gate.py:6:`exp_boundary_residual_beta_absent_audit.py`: do not reopen the global BOUNDARY
tools/exp_prime_persistent_blank_gate.py:21:from exp_boundary_short_denominator_extension import gue_spacing_blocks
tools/exp_prime_persistent_blank_gate.py:22:from exp_boundary_residual_beta_absent_audit import support_state
tools/exp_prime_persistent_blank_gate.py:23:from exp_semireal_boundary_transfer_gate import row_spacings
tools/exp_prime_persistent_blank_gate.py:176:            "generator": "prime gaps from dnd_autoricerca row_spacings and direct sieve; controls from GUE random matrix blocks and logistic return intervals",
tools/exp_prime_persistent_blank_gate.py:177:            "denominator": "8 prime row-local windows (2 providers x 4 offsets) plus 8 cross-domain controls",
tools/exp_prime_persistent_blank_gate.py:179:            "not_tested": "global beta atlas, V_c, gap_ratio, source GUE/Poisson labels",
tools/data/reports/agent_20260514_1850.md:4:**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / BOUNDARY fisico GOE-GUE-Poisson-Anderson  
tools/data/reports/agent_20260514_1850.md:5:**verdict**: VALUE_STABLE / TOOL CONTRACT TRANSFER - il tester `component_state(SR,L1,triple_var)` legge un nuovo spettro fisico Anderson 3D senza cambiare definizioni osservabili e senza perdere il rimbalzo fisico A -> matematica -> fisico B. Il ritorno fisico e' strumentale: W4 e W16.5 restano active contro Poisson, ma il contrasto diretto separa solo `triple_var`; `SR` e `L1` non chiudono il bordo 3D a `L=6`.  
tools/data/reports/agent_20260514_1850.md:23:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + ponte QxG continuo/discreto + tensione BOUNDARY GUE/Poisson + nodo fisico Anderson 3D.
tools/data/reports/agent_20260514_1850.md:24:- **Dipolo / punto-zero**: caos metallico / localizzazione critica. Punto-zero: Poisson span-matched, perche' ogni spettro torna leggibile solo se il null fisico-matematico resta esplicito.
tools/data/reports/agent_20260514_1850.md:26:- **Proto-ipotesi**: `component_state(SR,L1,triple_var)` e' interfaccia riusabile se un nuovo spettro fisico ordinato produce component states contro Poisson e contrasto diretto dichiarato senza cambiare definizioni dal registry.
tools/data/reports/agent_20260514_1850.md:33:- `why`: l'esperimento resta nel perimetro GOE/GUE/Poisson-Anderson indicato dalla direttiva e testa il passaggio tool da 1D/WD a un nuovo bordo fisico 3D.
tools/data/reports/agent_20260514_1850.md:42:- **Fonte fisica A**: classi spettrali Wigner-Dyson GOE/GUE gia' rafforzate nel report `20260514_1640`.
tools/data/reports/agent_20260514_1850.md:43:- **Significato fisico dichiarato**: GOE = simmetria reale/time-reversal; GUE = unitaria/no time-reversal; Poisson = livelli indipendenti/null span-matched.
tools/data/reports/agent_20260514_1850.md:50:- **Null**: Poisson span-matched con stesso numero di gap centrali utilizzabili.
tools/data/reports/agent_20260514_1850.md:66:| Anderson 3D W16.5 critical boundary | 768 | SR,L1,triple_var | 0.509807 / 0.386906 / +0.122901 | 0.000122 | +2.741 | -0.142338 | 0.000122 | -0.945 | -1.969355 | 0.000122 | -2.504 |
tools/data/reports/agent_20260514_1850.md:77:- **Verificato**: entrambi i regimi Anderson 3D sono non-Poisson sulle tre osservabili focus.
tools/data/reports/agent_20260514_1850.md:110:Il tester diventa interfaccia riusabile su questo perimetro: legge un nuovo spettro fisico, conserva le definizioni del registry, produce stati componente e lascia trace. Il risultato non diventa legge fisica: Anderson 3D W4/W16.5 resta non-Poisson contro null, ma il bordo diretto separa solo `triple_var`; `SR,L1` restano insufficienti nel setup `L=6`.
tools/data/reports/agent_20260514_1850.md:114:- **Due radici**: simmetria Wigner-Dyson GOE/GUE / bordo disordinato Anderson 3D.
tools/data/reports/agent_20260514_1850.md:115:- **Singolare**: Poisson span-matched come punto-zero che rende confrontabili fisico A e fisico B.
tools/exp_quasiperiodic_vc_lattice_gate.py:8:small boundary lattice across Fibonacci sizes, phases, and controls.
tools/exp_quasiperiodic_vc_lattice_gate.py:102:    domains = {
tools/exp_quasiperiodic_vc_lattice_gate.py:114:            for domain, theta in domains.items():
tools/exp_quasiperiodic_vc_lattice_gate.py:118:                    "domain": domain,
tools/exp_quasiperiodic_vc_lattice_gate.py:130:                    "domain": "balanced_random_phi_density",
tools/exp_quasiperiodic_vc_lattice_gate.py:139:    for domain in sorted({row["domain"] for row in rows}):
tools/exp_quasiperiodic_vc_lattice_gate.py:140:        subset = [row for row in rows if row["domain"] == domain]
tools/exp_quasiperiodic_vc_lattice_gate.py:141:        summary[domain] = summarize([row["vc"] for row in subset], args.v_step)
tools/exp_quasiperiodic_vc_lattice_gate.py:143:    summary_by_domain_phase = {}
tools/exp_quasiperiodic_vc_lattice_gate.py:146:        grouped[(row["domain"], row["phase"])].append(row)
tools/exp_quasiperiodic_vc_lattice_gate.py:147:    for (domain, phase), subset in sorted(grouped.items()):
tools/exp_quasiperiodic_vc_lattice_gate.py:148:        summary_by_domain_phase[f"{domain}|phase={phase}"] = summarize(
tools/exp_quasiperiodic_vc_lattice_gate.py:155:        if row["domain"] == "phi" and abs(row["phase"]) < 1e-12
tools/exp_quasiperiodic_vc_lattice_gate.py:174:        "summary_by_domain_phase": summary_by_domain_phase,
tools/exp_selective_layer_decoupling.py:5:Consecutio from BOUNDARY (piano 60h): The two Markov layers (pairs->SR,L1; triples->SR2,L2)
tools/exp_selective_layer_decoupling.py:6:are coupled at the uniform-shuffle boundary (same critical alpha=0.334). But Mk1 surrogates
tools/exp_selective_layer_decoupling.py:265:        'GUE': gen_gue_spacings(args.N, rng),
tools/exp_selective_layer_decoupling.py:266:        'Poisson': gen_poisson_spacings(args.N, rng),
tools/data/reports/agent_20260506_0625.md:1:# Agent Report — Perturbation Dimensionality Is Not Yet a Stable GUE Invariant
tools/data/reports/agent_20260506_0625.md:4:**Tension explored**: META + BOUNDARY
tools/data/reports/agent_20260506_0625.md:7:The 03:30 run reported that scale-selective perturbations reveal a second axis in GUE (effective rank 1.889, PC2=25.2%) but not in primes. The caveat was explicit: the GUE sample was short (`N=253`). This run tests whether that second axis survives independent GUE ensembles and whether it depends on the observable definitions hidden under the same labels (`SR`, `SR2`, `triple_var`).
tools/data/reports/agent_20260506_0625.md:13:- fixed domains: `primes` 12,000 gaps, `prime_shuffle_control` 12,000 permuted prime gaps, `poisson` 12,000 iid exponential spacings;
tools/data/reports/agent_20260506_0625.md:14:- GUE long control: 6 independent replicates, each from 16 Hermitian matrices of size 180, after 10% edge trim; each replicate has 2,288 spacings;
tools/data/reports/agent_20260506_0625.md:15:- GUE short control: 6 independent one-matrix replicates of size 42, after edge trim; this approximates the fragile small-sample regime;
tools/data/reports/agent_20260506_0625.md:34:| GUE long, 6 reps mean | 2288 each | 1.305 ± 0.278 | 0.064 ± 0.066 | 0.877 ± 0.081 |
tools/data/reports/agent_20260506_0625.md:35:| GUE short, 6 reps mean | short | 1.683 ± 0.498 | 0.106 ± 0.080 | 0.567 ± 0.340 |
tools/data/reports/agent_20260506_0625.md:44:| GUE long, 6 reps mean | 2288 each | 1.381 ± 0.223 | 0.099 ± 0.069 | 0.874 ± 0.082 |
tools/data/reports/agent_20260506_0625.md:45:| GUE short, 6 reps mean | short | 2.013 ± 0.525 | 0.159 ± 0.087 | 0.746 ± 0.242 |
tools/data/reports/agent_20260506_0625.md:49:1. **The strong GUE second-axis claim does not survive as stated.** Under direct `scale_0330` observables, long independent GUE replicates give rank 1.381 ± 0.223 and PC2 9.9% ± 6.9%, not rank 1.889 and PC2 25.2%. The previous number is inside the fragile short-sample regime: GUE short controls have rank 2.013 ± 0.525 and PC2 15.9% ± 8.7%.
tools/data/reports/agent_20260506_0625.md:51:2. **Short GUE samples inflate apparent perturbation dimensionality.** In both observable sets, GUE short has higher rank and larger variance than GUE long. This does not prove the 03:30 axis was false in every configuration; it restricts it to a sample-size-sensitive observation unless a larger-replicate run recovers it.
tools/data/reports/agent_20260506_0625.md:57:5. **Poisson and shuffled-prime controls show multi-axis artifacts.** Poisson has rank 1.917/2.201 depending on observable set; prime shuffle control has rank 2.294/1.988. Multi-dimensional perturbation response by itself is not evidence of structured GUE-like boundary. It can arise from low structural signal plus noisy denominators in retention normalization.
tools/data/reports/agent_20260506_0625.md:60:**CONSTRAINT on META + BOUNDARY**: "GUE has a second perturbation axis" must be scoped to the exact sample length, generator, and observable definitions. In the larger independent-GUE perimeter tested here, the robust statement is weaker:
tools/data/reports/agent_20260506_0625.md:62:> Primes remain near one perturbation coordinate under both observable sets; GUE long replicates show only a weak second component; short GUE samples can inflate apparent rank; Poisson and shuffled controls can also appear multi-axis.
tools/data/reports/agent_20260506_0625.md:64:The boundary is still operator-dependent, but perturbation dimensionality is not yet a stable domain invariant. The next valid test is not another single GUE matrix; it is a replicate-and-size curve for effective rank vs number of spacings, with observable definitions versioned.
tools/data/reports/agent_20260506_0625.md:73:- **L4 edge cases**: the short-GUE effect is isolated as its own control, not averaged into long GUE.
tools/exp_spectral_landscape.py:3:exp_spectral_landscape.py — Map the spectral landscape across domains.
tools/exp_spectral_landscape.py:6:Identifies: GUE domains, Poisson domains, and BOUNDARY domains.
tools/exp_spectral_landscape.py:8:The question: Is the boundary between GUE and Poisson populated by multiple
tools/exp_spectral_landscape.py:9:domains, or are primes special? If boundary sequences share cascade structure,
tools/exp_spectral_landscape.py:10:the boundary IS the content.
tools/exp_spectral_landscape.py:22:N_DEFAULT = 5000  # spacings per domain
tools/exp_spectral_landscape.py:52:    """GUE: eigenvalue spacings of complex Hermitian random matrix."""
tools/exp_spectral_landscape.py:100:    """Poisson: uncorrelated exponential spacings."""
tools/exp_spectral_landscape.py:111:    """Semi-Poisson: P(s) = 4s*exp(-2s). Known intermediate statistics."""
tools/exp_spectral_landscape.py:123:    """Berry-Robnik: mixed system, fraction rho chaotic (GUE-like), 1-rho regular (Poisson).
tools/exp_spectral_landscape.py:124:    This is the canonical boundary model from quantum chaos."""
tools/exp_spectral_landscape.py:162:    """Model for Riemann zeta zeros — Montgomery pair correlation (GUE).
tools/exp_spectral_landscape.py:163:    We use GUE directly since computing actual zeros is expensive."""
tools/exp_spectral_landscape.py:168:    """Anderson model at critical point (3D) — known to be at the boundary.
tools/exp_spectral_landscape.py:253:def run_domain(name, generator, n_spacings, n_surrogates, **kwargs):
tools/exp_spectral_landscape.py:254:    """Run observables on a domain + shuffled surrogates."""
tools/exp_spectral_landscape.py:300:    """Classify domain by <r> statistic."""
tools/exp_spectral_landscape.py:303:    GUE = 0.603
tools/exp_spectral_landscape.py:307:        return "BOUNDARY_low"
tools/exp_spectral_landscape.py:308:    elif r_mean < (GOE + GUE) / 2:
tools/exp_spectral_landscape.py:310:    elif r_mean < GUE + 0.03:
tools/exp_spectral_landscape.py:311:        return "GUE-like"
tools/exp_spectral_landscape.py:326:    domains = [
tools/exp_spectral_landscape.py:327:        # Expected GUE
tools/exp_spectral_landscape.py:328:        ("GUE_matrix", gen_gue, {}),
tools/exp_spectral_landscape.py:334:        # Expected Poisson
tools/exp_spectral_landscape.py:335:        ("Poisson", gen_poisson, {}),
tools/exp_spectral_landscape.py:342:        ("semi_Poisson", gen_semi_poisson, {}),
tools/exp_spectral_landscape.py:358:    for name, gen, kwargs in domains:
tools/exp_spectral_landscape.py:359:        res = run_domain(name, gen, N, NS, **kwargs)
tools/exp_spectral_landscape.py:369:    print("\nReference: Poisson <r>=0.386, GOE <r>=0.536, GUE <r>=0.603")
tools/exp_spectral_landscape.py:380:    for cls in ["POISSON", "BOUNDARY_low", "GOE-like", "GUE-like", "RIGID"]:
tools/exp_spectral_landscape.py:384:    # Boundary analysis — do boundary domains share structure?
tools/exp_spectral_landscape.py:385:    boundary = [r for r in results if "error" not in r and classify(r["r_mean"]) == "BOUNDARY_low"]
tools/exp_spectral_landscape.py:386:    if boundary:
tools/exp_spectral_landscape.py:387:        print(f"\n=== Boundary Domains ({len(boundary)}) ===")
tools/exp_spectral_landscape.py:388:        for b in boundary:
tools/exp_spectral_landscape.py:391:        # Test: do boundary domains have correlated observables?
tools/exp_spectral_landscape.py:392:        if len(boundary) >= 3:
tools/exp_spectral_landscape.py:393:            r_vals = [b["r_mean"] for b in boundary]
tools/exp_spectral_landscape.py:394:            beta_vals = [b["beta"] for b in boundary]
tools/exp_spectral_landscape.py:395:            acf1_vals = [b["acf1"] for b in boundary]
tools/exp_spectral_landscape.py:400:    # Key question: are primes unique at the boundary or do others live there?
tools/exp_spectral_landscape.py:407:        # Distance to each domain
tools/data/reports/falsifier_20260430_1905.json:9:      "claim": "Universal Poisson drift confirmed. All five τ values decrease with scale",
tools/data/reports/falsifier_20260430_1905.json:37:      "claim": "Universal Poisson drift confirmed ... τ values decrease with scale",
tools/data/reports/agent_20260405_0919.md:4:**Tensions explored**: BOUNDARY (0.75) + METRIC_TENSOR (0.9)
tools/data/reports/agent_20260405_0919.md:7:> Direction: "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso"
tools/data/reports/agent_20260405_0919.md:11:Previous experiment showed primes drift from GUE toward Poisson with scale. **What is the functional form of this crossover?** The Brody distribution P(s) = (1+beta)*alpha*s^beta*exp(-alpha*s^{1+beta}) interpolates between Poisson (beta=0) and GOE (beta=1). What is beta(p) for primes?
tools/data/reports/agent_20260405_0919.md:36:| Extrapolated Poisson (beta=0) | **p ~ 10^13** |
tools/data/reports/agent_20260405_0919.md:42:2. **Primes are always above Cramer**: beta_Cramer ≈ 0 at all scales (pure Poisson, as expected). Primes have beta ≈ 0.23-0.42, solidly intermediate between Poisson and GOE.
tools/data/reports/agent_20260405_0919.md:44:3. **The crossover is NOT a phase transition**: there is no sharp boundary between GUE and Poisson regimes. The Brody beta decays smoothly and linearly in ln(p). The "boundary" is the entire range.
tools/data/reports/agent_20260405_0919.md:46:4. **Falsifiable prediction**: beta → 0 (Poisson) at p ~ 10^13. This is testable with segmented sieves.
tools/data/reports/agent_20260405_0919.md:58:The "third included" at the GUE/Poisson boundary is not a point — it's a **crossover function**. The primes' level repulsion parameter decays as 0.606 - 0.020*ln(p), bridging two universality classes without belonging to either. This is structurally consistent with:
tools/data/reports/agent_20260405_0919.md:59:- The D-ND framework: the boundary between two poles (GUE/Poisson) carries its own structure
tools/data/reports/agent_20260405_0919.md:61:- The crossover function itself is the "third" — neither GUE nor Poisson, but a specific interpolation
tools/data/reports/agent_20260405_0919.md:67:- **PREDICTION**: primes reach Poisson at p ~ 10^13
tools/data/reports/report_20260306_0341.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260306_0341.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260306_0341.md:26:- brownian_motion_var_0.5: r=1.1993212669683257, spacing=Poisson-like
tools/data/reports/report_20260306_0341.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260306_0341.md:28:- percolation_var_0.55: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260306_0341.md:29:- percolation_var_0.65: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260331_1809.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260331_1809.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=1.0000 (GUE standard=0.60)
tools/data/reports/report_20260331_1809.md:25:- logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like
tools/data/reports/report_20260331_1809.md:26:- logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260331_1809.md:27:- brownian_motion_var_0.5: r=0.9523809523809524, spacing=Poisson-like
tools/data/reports/report_20260331_1809.md:28:- percolation_var_0.65: r=1.0, spacing=Poisson-like
tools/data/reports/falsifier_20260508_1947.json:9:      "claim": "\"qui diventa non-possibile cercare il boundary del supertile con label-set, IDS rank o errore label sullo stesso perimetro\"",
tools/data/reports/falsifier_20260508_1947.json:10:      "evidence": "I dati mostrano non-separazione/bias tra aligned e misaligned sul perimetro testato: all-high 116/160 vs 115/160, mediana IDS/index delta 0 per entrambi, label error migliore nel misaligned. Non mostrano una proibizione esatta o probabilita' 0 per il boundary: non c'e' matrice/entry zero che fondi il linguaggio 'non-possibile'.",
tools/data/reports/falsifier_20260511_0330.json:17:      "evidence": "Il seme/lab_data indicano direzione BOUNDARY su `8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo`; il ciclo usa 4 GUE + 4 logistic controlli e resta sul residuo `numeri_primi:cycle_3`. La deviazione verso prime-residue e logistic e' motivata, ma non dichiarata come `deliberate_counter_perimeter` rispetto al perimetro 8 GUE/5 Poisson.",
tools/data/reports/falsifier_20260511_0330.json:18:      "suggestion": "Nel prossimo ciclo dichiarare esplicitamente se `prime_persistent_blank` e' contro-perimetro deliberato della direzione GUE/Poisson, oppure tornare al perimetro richiesto con 8 GUE e 5 Poisson come domini principali."
tools/data/reports/agent_20260507_0901.md:14:trasferisce da BOUNDARY a DUALITA come operatore, ma non trasferisce la
tools/data/reports/agent_20260507_0901.md:15:coordinata locale GUE/Poisson.
tools/data/reports/agent_20260507_0901.md:17:Domanda di questo cycle: applicato a 4 perimetri non-BOUNDARY con poli
tools/data/reports/agent_20260507_0901.md:50:   In all 4 non-BOUNDARY perimeters, the coherent endpoint carries denominator
tools/data/reports/agent_20260507_0901.md:62:   BOUNDARY coordinate.
tools/data/reports/agent_20260507_0901.md:65:   GUE/Poisson layer. It is the coordinate created by the replacement protocol:
tools/data/reports/agent_20260507_0901.md:78:The next word is not `boundary_layer`. The correct category is:
tools/data/reports/agent_20260507_0901.md:85:domain-specific semantic axis.
tools/data/reports/agent_20260507_0901.md:89:- 0803: BOUNDARY denominator gate transfers to DUALITA, BOUNDARY coordinate does not.
tools/data/reports/agent_20260507_0901.md:90:- 0901: across 4 non-BOUNDARY perimeters, the transferable object is one-sided
tools/data/reports/agent_20260507_0901.md:91:  order support; beta ambiguity is a protocol fold, not domain ontology.
tools/data/reports/agent_20260507_0901.md:103:L3 no silent patching: the scope changed from BOUNDARY to non-BOUNDARY
tools/data/reports/agent_20260507_0901.md:105:instead of stretching `BOUNDARY_LAYER_GATE`.
tools/data/reports/agent_20260515_1712.md:14:- **Operatori laterali scelti**: boundary operator per separare warning e claim; graph cut per bloccare selettori freshness; spectrum-preserving style control come forma generale del null che conserva perimetro ma distrugge selezione.
tools/data/reports/falsifier_20260514_1701.json:11:      "suggestion": "Riformulare il prossimo claim come: zero-excess e' esatto per phi/silver nel perimetro testato; bronze e' quasi-stabile ma non hard. Isolare le 9 finestre bronze e dichiarare il boundary che le produce."
tools/data/reports/falsifier_20260514_1701.json:23:      "claim": "\"relation: follows_direction\" e \"direzione viva BOUNDARY GUE/Poisson\"",
tools/data/reports/falsifier_20260514_1701.json:24:      "evidence": "Il seme/lab_data dichiarano direzione: '8 domini GUE, 5 Poisson — il confine e' il terzo incluso operativo'. Il report usa Hamiltoniane quasiperiodiche Sturmian, controlli metallici, balanced random e block shuffle; non misura statistiche GUE/Poisson ne' gli 8/5 domini. La deviazione e' motivata come ritorno fisico, ma `deliberate_counter_perimeter=false` rende il drift non completamente tracciato.",
tools/data/reports/falsifier_20260514_1701.json:25:      "suggestion": "Dichiarare `deliberate_counter_perimeter=true` oppure aggiungere un check minimo GUE/Poisson esplicito: nearest-neighbor spacing/r-statistics sui tre generatori e mapping verso GUE/Poisson, con confronto ai domini richiesti dal seme."
tools/data/reports/falsifier_20260514_1701.json:28:  "summary": "Il report e' parzialmente coerente: L4 rompe l'invariante Sturmian per l'edge case bronze, L5 chiede decontaminazione da risultati classici, e L8 resta un drift verso quasiperiodico non pienamente dichiarato rispetto alla direzione GUE/Poisson."
tools/data/reports/agent_20260509_1457.md:7:observables_used: [`unit_status`, `unit_crossing_N`, `below_unit_count`, `fit_ready_rows`, `denominator_state`, `best_model`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var.
tools/data/reports/agent_20260509_1457.md:8:**observable_contract**: claim=`V_c(phi)` converge a 1 come limite leggibile del canale ordinato; observable=relazione dei punti fit-ready con il bordo `V_c=1`; operator=`exp_vc_unit_boundary_audit.py` su deposito `vc_fit_model_gate_20260509_1400`; generator=`reference_order`, `order_memory`, `periodic_closure`, `random_dispersion`; denominator=13 righe ammissibili `complete/contaminated` del fit model gate, N={89,144,233,377}, soglie r={0.48,0.50,0.52}, livelli `per_mode_best` e `accepted_candidates`; non_possible=dichiarare convergenza a 1 dall'alto quando la curva osservata attraversa sotto 1 nel perimetro; not_tested=nuovi spettri, nuovi N, nuovi candidati, limite asintotico oltre la finestra osservata.
tools/data/reports/agent_20260509_1457.md:15:- **Operatori laterali scelti**: boundary operator, graph cut, fit come morfismo. Entrano per separare il bordo unitario dal modello numerico.
tools/data/reports/agent_20260509_1457.md:18:- **Possibile / non-possibile**: possibile = usare `V_c=1` come unit boundary audit; non-possibile = chiamarlo limite osservato quando 12/13 righe hanno punti sotto 1.
tools/data/reports/agent_20260509_1457.md:28:- Nuovo strumento: `tools/exp_vc_unit_boundary_audit.py`.
tools/data/reports/agent_20260509_1457.md:30:- Output: `tools/data/vc_unit_boundary_audit_20260509_1457.json`.
tools/data/reports/agent_20260509_1457.md:97:`V_c=1` e' un unit boundary audit del sottografo fit-ready; non e' attrattore verificato della scala nel perimetro 14:00.
tools/data/reports/agent_20260509_1457.md:109:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/data/seme.json`, `tools/dnd_scenario.py --best`, report `agent_20260509_1337.md`, report `agent_20260509_1400.md`, JSON `tools/data/vc_fit_model_gate_20260509_1400.json`, nuovo JSON `tools/data/vc_unit_boundary_audit_20260509_1457.json`.
tools/data/reports/agent_20260509_1457.md:116:- **L7 possibile/non-possibile**: possibile = unit boundary audit; non-possibile = convergenza a 1 dall'alto nel perimetro osservato.
tools/data/reports/agent_20260509_1457.md:120:- Verifica script: `python -m py_compile tools/exp_vc_unit_boundary_audit.py`.
tools/data/reports/agent_20260509_1457.md:121:- Run valido: `python tools/exp_vc_unit_boundary_audit.py --input tools/data/vc_fit_model_gate_20260509_1400.json --out tools/data/vc_unit_boundary_audit_20260509_1457.json`.
tools/data/reports/agent_20260509_1457.md:123:- Git state: worktree gia' sporco da cicli precedenti; questo cycle aggiunge solo lo script unit-boundary, il JSON 1457 e questo report.
tools/data/reports/agent_20260509_1457.md:126:- Script nuovo: `tools/exp_vc_unit_boundary_audit.py`
tools/data/reports/agent_20260509_1457.md:127:- Data: `tools/data/vc_unit_boundary_audit_20260509_1457.json`
tools/data/reports/agent_20260509_1400.md:7:observables_used: [`denominator_state`, `fit_ready_rows`, `excluded_rows`, `best_model`, `delta_aicc_to_second`, `unit_limit_status`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
tools/data/reports/agent_20260509_1400.md:8:**observable_contract**: claim=il fit parametrico di `V_c` puo' entrare solo sulle righe `complete` o `contaminated` del gate fit-ready; observable=famiglia di modello migliore tra cinque forme semplici, separata da stato denominatore e massa esclusa; operator=confronto AICc su `vc_median_fit_ready` dal deposito 13:37, senza ricomputare spettri; generator=classi `reference_order`, `order_memory`, `periodic_closure`, `random_dispersion`; denominator=JSON `vc_fit_ready_scale_table_20260509_1337`, N={89,144,233,377}, soglie r={0.48,0.50,0.52}, livelli `per_mode_best` e `accepted_candidates`; non_possible=righe `broken` escluse dal fit e righe sotto `V_c=1` impediscono il claim osservato "converge a 1 dall'alto"; not_tested=nuovi N, nuovi generatori, nuovi spettri, GUE/Poisson transfer, gap_ratio, fit a tre parametri con asintoto libero.
tools/data/reports/agent_20260509_1400.md:15:- **Operatori laterali scelti**: fit come morfismo, boundary operator, graph cut. Entrano per separare righe ammesse, righe rotte e famiglie numeriche.
tools/data/reports/agent_20260509_1400.md:89:**CONSTRAINT**: il fit parametrico di `V_c` non produce una legge comune del boundary.
tools/data/reports/agent_20260509_1400.md:102:Il prossimo ciclo deve estendere N solo per `reference_order` e `order_memory` con denominatore `complete`. Se i punti alti restano sotto 1 e lineari nel perimetro esteso, il claim `V_c(phi) -> 1` va riscritto come coordinata storica del vecchio perimetro, non come attrattore del boundary.
tools/data/reports/agent_20260509_1400.md:108:- **L3 no observable drift**: non sono testati gap_ratio, nuovi spettri, nuovi N o GUE/Poisson.
tools/data/reports/agent_20260515_1734.md:4:**Tension explored**: BOUNDARY / COMP_DOMAIN_PHOTONIC_TRASCENDENZA_LIMITE  
tools/data/reports/agent_20260515_1734.md:7:**observable_contract**: claim=`phi` fotonico manifesta un confine fisico tra ordine periodico e disordine random; observable=statistiche della trasmissione in lambda (`stopband_fraction`, `spectral_entropy`, `peak_spacing_r`); operator=`tools/exp_photonic_boundary_third_included_gate.py`; generator=multistrati quarter-wave fixed-thickness phi/silver/bronze/periodic/balanced_random; denominator=N={55,89,144} x phase={0,0.25,0.5,0.75}, random_trials=12, lambda=0.65..1.85 su 241 punti; non_possible=terzo incluso fotonico chiuso se `phi` non resta dentro il segmento periodico-random su stopband ed entropia o se collassa nel random; not_tested=modello Maxwell completo con interfacce fisiche calibrate, misure sperimentali, GUE/Poisson universality diretta.
tools/data/reports/agent_20260515_1734.md:11:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + TxE funzione di partizione/campo EM + QxG continuo/discreto come vuoto ancora da pontare + tensione `BOUNDARY` 8 GUE / 5 Poisson.
tools/data/reports/agent_20260515_1734.md:13:- **Piano superiore**: geometria dei campi e bicono-dipoli; il confine non e' etichetta GUE/Poisson ma stato di trasporto del campo elettromagnetico.
tools/data/reports/agent_20260515_1734.md:14:- **Operatori laterali scelti**: transfer matrix ottica per il ritorno fisico; boundary operator per tenere il denominatore riga-per-riga; spectrum-preserving style control come random bilanciato a densita phi.
tools/data/reports/agent_20260515_1734.md:22:- `why`: segue la direzione viva "8 domini GUE, 5 Poisson - il confine e' il terzo incluso operativo" portando il confine in un dominio fisico EM invece di proseguire il contro-perimetro `V_c`.
tools/data/reports/agent_20260515_1734.md:23:- `not_drift`: non riapre prime/mod6, non usa freshness selector come autorita, non promuove TRASCENDENZA_LIMITE per score del proiettore, non fittta `V_c`; usa `COMP_DOMAIN_PHOTONIC_TRASCENDENZA_LIMITE` solo come sorgente da falsificare nel perimetro BOUNDARY.
tools/data/reports/agent_20260515_1734.md:35:- **Punto fisico sorgente**: confine statistico GUE/Poisson come attrito tra repulsione spettrale e indipendenza.
tools/data/reports/agent_20260515_1734.md:44:- `python tools/dnd_scenario.py --best` eseguito: segnala `TENS_SCALE_TRASCENDENZA_LIMITE`, subordinato al campo BOUNDARY e ai selector `SAFE_AS_AUTHORITY`.
tools/data/reports/agent_20260515_1734.md:45:- `python -m py_compile tools/exp_photonic_boundary_third_included_gate.py` completato.
tools/data/reports/agent_20260515_1734.md:46:- Run: `python tools/exp_photonic_boundary_third_included_gate.py --out tools/data/photonic_boundary_third_included_gate_20260515_1734.json`.
tools/data/reports/agent_20260515_1734.md:53:| domain | rows | stopband median | entropy median | peak_spacing_r median |
tools/data/reports/agent_20260515_1734.md:65:| third_included_photonic_boundary | false |
tools/data/reports/agent_20260515_1734.md:82:Il ritorno fotonico e' parziale: `phi` separa ordine e random sullo stopband, ma l'entropia spettrale rompe il bicono. Il claim valido diventa: il confine BOUNDARY trasferisce in fotonica solo come componente osservabile-specifica; non come terzo incluso fisico chiuso nel perimetro misurato.
tools/data/reports/agent_20260515_1734.md:89:- **Campo di possibilita**: possibile = progettare un test fotonico BOUNDARY con stopband ed entropia insieme; non-possibile = promuovere `phi` fotonico come terzo incluso usando solo `T_mean` o stopband.
tools/data/reports/agent_20260515_1734.md:97:ssp_value: yes. Lo script `exp_photonic_boundary_third_included_gate.py` e' riusabile per testare stack ottici con generatori, fasi, indici e griglie lambda diverse prima di trasformare il risultato in demo o visualizzazione.
tools/data/reports/agent_20260515_1734.md:109:- `tools/exp_photonic_boundary_third_included_gate.py`
tools/data/reports/agent_20260515_1734.md:110:- `tools/data/photonic_boundary_third_included_gate_20260515_1734.json`
tools/data/reports/falsifier_20260502_0330.json:32:      "suggestion": "Riformulare il perimetro: nei 7 test, 5 sequenze con lock iniziale <15 deg mostrano FULL; RW_excur e Poisson sono esclusioni esplicite, non rumore da comprimere."
tools/data/reports/fibonacci_spectrum_20260305_0756.json:12:        "GUE": 0.29670833202771496,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:14:        "Poisson": 0.510008332027715,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:23:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:25:        "GUE": 0.1637341019241806,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:27:        "Poisson": 0.37703410192418063,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:36:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:38:        "GUE": 0.07108013924144507,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:40:        "Poisson": 0.2843801392414451,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:49:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:51:        "GUE": 0.0013531361002089293,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:53:        "Poisson": 0.21194686389979112,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:64:        "GUE": 0.033692181448734315,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:66:        "Poisson": 0.17960781855126573,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:77:        "GUE": 0.06412167049004891,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:79:        "Poisson": 0.14917832950995114,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:90:        "GUE": 0.09263337719183284,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:92:        "Poisson": 0.1206666228081672,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:103:        "GUE": 0.11916312020873215,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:105:        "Poisson": 0.09413687979126789,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:116:        "GUE": 0.14296513348744533,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:118:        "Poisson": 0.07033486651255472,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:127:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:129:        "GUE": 0.2041358611525424,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:131:        "Poisson": 0.009164138847457648,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:140:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:142:        "GUE": 0.2748295876655356,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:144:        "Poisson": 0.06152958766553557,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:153:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:155:        "GUE": 0.3640777020486299,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:157:        "Poisson": 0.15077770204862984,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:166:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:168:        "GUE": 0.43564800784619784,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:170:        "Poisson": 0.22234800784619782,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:179:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:181:        "GUE": 0.0013531361002089293,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:183:        "Poisson": 0.21194686389979112,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:192:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:194:        "GUE": 0.015680728701978786,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:196:        "Poisson": 0.19761927129802126,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:205:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:207:        "GUE": 0.029241086644125502,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:209:        "Poisson": 0.18405891335587454,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:220:        "GUE": 0.04273384302801908,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:222:        "Poisson": 0.17056615697198096,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:233:        "GUE": 0.05567668696247785,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:235:        "Poisson": 0.1576233130375222,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:246:        "GUE": 0.06821895426251079,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:248:        "Poisson": 0.14508104573748926,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:259:        "GUE": 0.08041041520559711,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:261:        "Poisson": 0.13288958479440294,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:272:        "GUE": 0.09263337719183284,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:274:        "Poisson": 0.1206666228081672,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:285:        "GUE": 0.10444251980628838,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:287:        "Poisson": 0.10885748019371166,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:298:        "GUE": 0.11551666300995106,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:300:        "Poisson": 0.09778333699004899,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:311:        "GUE": 0.12622818756544568,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:313:        "Poisson": 0.08707181243455436,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:324:        "GUE": 0.1363444703271271,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:326:        "Poisson": 0.07695552967287295,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:337:        "GUE": 0.14625965183538286,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:339:        "Poisson": 0.06704034816461718,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:350:        "GUE": 0.15586954772482753,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:352:        "Poisson": 0.05743045227517252,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:361:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260305_0756.json:363:        "GUE": 0.16527431088573818,
tools/data/reports/fibonacci_spectrum_20260305_0756.json:365:        "Poisson": 0.04802568911426186,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:12:        "GUE": 0.29670833202771496,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:14:        "Poisson": 0.510008332027715,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:23:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:25:        "GUE": 0.1637341019241806,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:27:        "Poisson": 0.37703410192418063,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:36:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:38:        "GUE": 0.07108013924144507,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:40:        "Poisson": 0.2843801392414451,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:49:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:51:        "GUE": 0.0013531361002089293,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:53:        "Poisson": 0.21194686389979112,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:64:        "GUE": 0.033692181448734315,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:66:        "Poisson": 0.17960781855126573,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:77:        "GUE": 0.06412167049004891,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:79:        "Poisson": 0.14917832950995114,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:90:        "GUE": 0.09263337719183284,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:92:        "Poisson": 0.1206666228081672,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:103:        "GUE": 0.11916312020873215,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:105:        "Poisson": 0.09413687979126789,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:116:        "GUE": 0.14296513348744533,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:118:        "Poisson": 0.07033486651255472,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:127:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:129:        "GUE": 0.2041358611525424,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:131:        "Poisson": 0.009164138847457648,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:140:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:142:        "GUE": 0.2748295876655356,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:144:        "Poisson": 0.06152958766553557,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:153:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:155:        "GUE": 0.3640777020486299,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:157:        "Poisson": 0.15077770204862984,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:166:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:168:        "GUE": 0.43564800784619784,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:170:        "Poisson": 0.22234800784619782,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:179:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:181:        "GUE": 0.0013531361002089293,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:183:        "Poisson": 0.21194686389979112,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:192:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:194:        "GUE": 0.015680728701978786,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:196:        "Poisson": 0.19761927129802126,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:205:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:207:        "GUE": 0.029241086644125502,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:209:        "Poisson": 0.18405891335587454,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:220:        "GUE": 0.04273384302801908,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:222:        "Poisson": 0.17056615697198096,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:233:        "GUE": 0.05567668696247785,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:235:        "Poisson": 0.1576233130375222,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:246:        "GUE": 0.06821895426251079,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:248:        "Poisson": 0.14508104573748926,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:259:        "GUE": 0.08041041520559711,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:261:        "Poisson": 0.13288958479440294,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:272:        "GUE": 0.09263337719183284,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:274:        "Poisson": 0.1206666228081672,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:285:        "GUE": 0.10444251980628838,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:287:        "Poisson": 0.10885748019371166,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:298:        "GUE": 0.11551666300995106,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:300:        "Poisson": 0.09778333699004899,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:311:        "GUE": 0.12622818756544568,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:313:        "Poisson": 0.08707181243455436,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:324:        "GUE": 0.1363444703271271,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:326:        "Poisson": 0.07695552967287295,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:337:        "GUE": 0.14625965183538286,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:339:        "Poisson": 0.06704034816461718,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:350:        "GUE": 0.15586954772482753,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:352:        "Poisson": 0.05743045227517252,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:361:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:363:        "GUE": 0.16527431088573818,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:365:        "Poisson": 0.04802568911426186,
tools/data/reports/agent_20260509_1409.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE
tools/data/reports/agent_20260509_1409.md:7:observables_used: [`denominator_state`, `excluded_mass`, `spacing_r`, `shuffle_r_statistic`, `transfer`] - osservabili domain-native per il gate boundary, non canonici SR/SR2/L1/L2/triple_var.
tools/data/reports/agent_20260509_1409.md:8:**observable_contract**: claim=`denominator_state` puo' trasferire oltre `V_c` solo dove la riga domain/window ha osservabile definito e null/surrogate row-aligned; observable=`spacing_r` + availability del null shuffle; operator=prescan sui 13 domini base del deposito autoricerca, non fit parametrico; generator=perimetro 8 GUE-like / 5 Poisson-like dei cycle 1..13; denominator=`boundary_shuffle_audit` quando presente; non_possible=dichiarare transfer nei domini senza null/surrogate; not_tested=nuovi spettri, nuovi domini, fit `V_c`, famiglia AICc, QxG chiuso.
tools/data/reports/agent_20260509_1409.md:11:- **Prima impressione**: il confine non chiede se il dominio e' GUE o Poisson; chiede se la riga ha un denominatore capace di sostenere un claim.
tools/data/reports/agent_20260509_1409.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + QxG continuo/discreto + nodo BOUNDARY del grafo + tensione `TRASCENDENZA_LIMITE`.
tools/data/reports/agent_20260509_1409.md:13:- **Dipolo / punto-zero**: classificato / non aggregabile; punto-zero = riga domain/window prima che il null decida se l'osservabile puo' viaggiare.
tools/data/reports/agent_20260509_1409.md:14:- **Piano superiore**: grafo della conoscenza e boundary operator. Il bordo e' una filtrazione: prima osservabile, poi null, poi claim.
tools/data/reports/agent_20260509_1409.md:15:- **Proto-ipotesi**: `denominator_state` trasferisce oltre `V_c` se separa riga misurabile, massa contaminata e blank senza usare GUE/Poisson come risposta.
tools/data/reports/agent_20260509_1409.md:16:- **Possibile / non-possibile**: possibile = claim boundary su righe con null row-aligned; non-possibile = claim di transfer nei domini senza null, anche quando `spacing_r` locale esiste.
tools/data/reports/agent_20260509_1409.md:17:- **Proiezione**: creare `tools/exp_boundary_denominator_prescan.py` e misurare 13 righe base: domain/window, source type, denominator_state, excluded mass, observable, null/surrogate, transfer.
tools/data/reports/agent_20260509_1409.md:22:- **YSN DeltaLink**: `domain row -> null availability -> transfer`, non `GUE/Poisson -> risposta`.
tools/data/reports/agent_20260509_1409.md:25:> Nel perimetro BOUNDARY 8 GUE / 5 Poisson, il gate `denominator_state` trasferisce oltre `V_c` solo se identifica le righe con null/surrogate disponibile e lascia blank le righe senza contro-perimetro.
tools/data/reports/agent_20260509_1409.md:28:- Nuovo strumento: `tools/exp_boundary_denominator_prescan.py`.
tools/data/reports/agent_20260509_1409.md:29:- Input: `tools/data/autoricerca_journal.json` e `tools/data/boundary_shuffle_audit.json`.
tools/data/reports/agent_20260509_1409.md:30:- Output: `tools/data/boundary_denominator_prescan_20260509_1409.json`.
tools/data/reports/agent_20260509_1409.md:31:- Perimetro atomico: cycle base `1..13`, esattamente 13 righe: 8 GUE-like, 5 Poisson-like.
tools/data/reports/agent_20260509_1409.md:49:| source GUE | 8 |
tools/data/reports/agent_20260509_1409.md:50:| source Poisson | 5 |
tools/data/reports/agent_20260509_1409.md:60:| domain/window | source | denominator_state | excluded mass | observable | null/surrogate | transfer |
tools/data/reports/agent_20260509_1409.md:62:| ising_2d:cycle_1 | GUE | contaminated | 0.810 | spacing_r=0.902 | shuffle z=-0.10; class_change=False | transfers |
tools/data/reports/agent_20260509_1409.md:63:| pendolo_doppio:cycle_2 | Poisson | absent | 1.000 | spacing_r=0.386 | absent | blank |
tools/data/reports/agent_20260509_1409.md:64:| numeri_primi:cycle_3 | GUE | complete | 0.000 | spacing_r=0.886 | shuffle z=-26.60; class_change=False | transfers |
tools/data/reports/agent_20260509_1409.md:65:| zeta_zeros:cycle_4 | GUE | absent | 1.000 | spacing_r=0.615 | absent | blank |
tools/data/reports/agent_20260509_1409.md:66:| logistica_biforcazione:cycle_5 | GUE | complete | 0.000 | spacing_r=0.997 | shuffle z=61.60; class_change=False | transfers |
tools/data/reports/agent_20260509_1409.md:67:| string_vibration:cycle_6 | Poisson | absent | 1.000 | spacing_r=0.384 | absent | blank |
tools/data/reports/agent_20260509_1409.md:68:| random_matrix:cycle_7 | GUE | complete | 0.000 | spacing_r=0.573 | shuffle z=-14.70; class_change=False | transfers |
tools/data/reports/agent_20260509_1409.md:69:| cellular_automata:cycle_8 | GUE | contaminated | 0.790 | spacing_r=0.861 | shuffle z=-0.10; class_change=False | transfers |
tools/data/reports/agent_20260509_1409.md:70:| percolation:cycle_9 | Poisson | complete | 0.000 | spacing_r=0.404 | shuffle z=16.10; class_change=True | transfers |
tools/data/reports/agent_20260509_1409.md:71:| coupled_oscillators:cycle_10 | Poisson | contaminated | 0.146 | spacing_r=0.385 | shuffle z=43.50; class_change=True | transfers |
tools/data/reports/agent_20260509_1409.md:72:| reaction_diffusion:cycle_11 | GUE | absent | 1.000 | spacing_r=0.759 | absent | blank |
tools/data/reports/agent_20260509_1409.md:73:| brownian_motion:cycle_12 | Poisson | complete | 0.000 | spacing_r=0.489 | shuffle z=-1.60; class_change=False | transfers |
tools/data/reports/agent_20260509_1409.md:74:| logistica_biforcazione_var_3.5699:cycle_13 | GUE | absent | 1.000 | spacing_r=0.997 | absent | blank |
tools/data/reports/agent_20260509_1409.md:77:1. **Verificato: il gate trasferisce su 8/13 righe del perimetro.** Il transfer non coincide con GUE o Poisson: include 5 sorgenti GUE e 3 sorgenti Poisson perche' la condizione e' disponibilita del null, non etichetta di classe.
tools/data/reports/agent_20260509_1409.md:84:**PARTIAL TRANSFER**: `denominator_state` trasferisce oltre `V_c` come gate di perimetro, non come risposta GUE/Poisson.
tools/data/reports/agent_20260509_1409.md:86:Nel perimetro 8 GUE / 5 Poisson, il gate produce una condizione cross-dominio verificabile su 8 righe con null shuffle disponibile. Su 5 righe resta blank strutturale: l'osservabile locale esiste, ma manca il contro-perimetro row-aligned.
tools/data/reports/agent_20260509_1409.md:92:- **Singolare**: domain/window prima della classificazione GUE/Poisson.
tools/data/reports/agent_20260509_1409.md:94:- **Campo di possibilita**: qui diventa possibile portare BOUNDARY in un contratto cross-dominio; qui diventa non-possibile chiudere QxG o dichiarare transfer sui 5 blank senza nuovo null.
tools/data/reports/agent_20260509_1409.md:97:Il prossimo ciclo boundary deve costruire null/surrogate row-aligned per i 5 blank. Se quei null entrano, il gate puo' diventare condizione cross-dominio completa. Se non entrano, il confine resta un perimetro 8/13 con blank dichiarato.
tools/data/reports/agent_20260509_1409.md:100:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/dnd_scenario.py --best`, `agent_20260509_1337.md`, `agent_20260509_1400.md`, `falsifier_20260509_1400.json`, `agent_20260507_0330.md`, `tools/data/autoricerca_journal.json`, `tools/data/boundary_shuffle_audit.json`, nuovo JSON `tools/data/boundary_denominator_prescan_20260509_1409.json`.
tools/data/reports/agent_20260509_1409.md:103:- **L3 no silent patching**: il ciclo non corregge il fit 14:00; usa quel falsifier come veto e cambia nodo al boundary denominator.
tools/data/reports/agent_20260509_1409.md:111:- Verifica script: `python -m py_compile tools/exp_boundary_denominator_prescan.py` completato senza errori.
tools/data/reports/agent_20260509_1409.md:112:- Run valido: `python tools/exp_boundary_denominator_prescan.py --out tools/data/boundary_denominator_prescan_20260509_1409.json`.
tools/data/reports/agent_20260509_1409.md:115:- Script nuovo: `tools/exp_boundary_denominator_prescan.py`
tools/data/reports/agent_20260509_1409.md:116:- Data: `tools/data/boundary_denominator_prescan_20260509_1409.json`
tools/data/reports/agent_20260509_1337.md:7:observables_used: [`denominator_state`, `fit_ready_rows`, `excluded_rows`, `excluded_events`, `vc_median_fit_ready`, `slope_per_N`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
tools/data/reports/agent_20260509_1337.md:15:- **Operatori laterali scelti**: boundary operator, graph cut, filtrazione. Entrano per tagliare il deposito in stati strutturali prima del fit.
tools/data/reports/agent_20260508_2108.md:8:**observable_contract**: claim=lo zero della carica Mobius intervallare e' testato come terzo incluso del gate aligned/misaligned; observable=rate low_low, rate high_high, SR mean per classi aligned/misaligned/zero; operator=classificazione di S_n*S_{n+1}: aligned<0, misaligned>0, zero=0; generator=prime gaps up to p<=1e6 with Mobius sieve; denominator=main N={5000,10000,20000} offset=0 plus seedcheck offsets {3000,7000,11000}; not_tested=gap_ratio Sturmian, high-core phi survival, universal GUE/Poisson classification.
tools/data/reports/agent_20260508_2108.md:13:- **Piano superiore**: boundary operator su grafo aritmetico. Il gap e' bordo tra primi; la carica Mobius del vuoto tra primi decide se il bordo e' solo rumore di lunghezza o classe informativa.
tools/data/reports/agent_20260508_2108.md:14:- **Operatori laterali scelti**: boundary operator, random walk, entropia. Boundary operator definisce il bordo prime-free; random walk fornisce il null di permutazione della carica; entropia entra come dispersione del vuoto senza primi.
tools/data/reports/agent_20260508_2108.md:27:Lo zero della carica Mobius intervallare e' rumore, boundary o mediatore del segnale low-low/high-high/SR?
tools/data/reports/agent_20260508_2108.md:85:- **Campo di possibilita**: qui diventa possibile testare un gate triadico del boundary aritmetico. Qui diventa non-possibile escludere `S=0` dal denominatore quando si parla di terzo incluso nel perimetro Mobius-primi.
tools/data/reports/agent_20260508_2108.md:88:Il prossimo passo deve separare terza classe autentica da effetto scala dell'intervallo: ripetere il gate con controllo che preserva anche la lunghezza del gap o stratifica per bucket di gap length. Se lo zero resta significativo dentro ogni bucket, il boundary e' aritmetico; se cade, il segnale e' dipendenza da lunghezza.
tools/data/reports/report_20260329_0343.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260329_0343.md:22:- [✗] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.6344 (GUE standard=0.60)
tools/data/reports/report_20260329_0343.md:25:- logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like
tools/data/reports/report_20260329_0343.md:26:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260329_0343.md:27:- brownian_motion_var_0.3: r=1.3557126030624262, spacing=Poisson-like
tools/data/reports/report_20260329_0343.md:28:- logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260404_0330.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260404_0330.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=1.0000 (GUE standard=0.60)
tools/data/reports/report_20260404_0330.md:25:- percolation_var_0.55: r=0.7543859649122806, spacing=Poisson-like
tools/data/reports/report_20260404_0330.md:26:- numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like
tools/data/reports/report_20260404_0330.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260404_0330.md:28:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/falsifier_20260514_1649.json:10:      "evidence": "La lente L6 richiede che la contaminazione cognitiva nomini almeno una voce CE-*, YSN, Cornelius, KSAR, PVI/Vault usata nella combo, oppure dichiari 'CE-none:' con motivo specifico. Nel report fornito compaiono A2, A9, A11, ponte QxG, graph completion 16:40 e direzione BOUNDARY GUE/Poisson, ma nessun metabolizzatore cognitivo esplicito.",
tools/data/reports/agent_20260506_1955.md:13:This run therefore does not test perturbation dimensionality. It asks a cross-domain META question:
tools/data/reports/agent_20260506_1955.md:15:> When the five canonical observables are measured under uniform partial shuffle, does observable collinearity break in structured domains, or only in controls where original-vs-shuffle denominators are weak?
tools/data/reports/agent_20260506_1955.md:24:- added `prime_shuffle` as a control domain;
tools/data/reports/agent_20260506_1955.md:28:- domains: first prime gaps, prime-shuffle control, independent GUE spacings, iid Poisson spacings;
tools/data/reports/agent_20260506_1955.md:41:| GUE | 0.990 | 1.060 | 0.989 | 0 | SR=-2.9, SR2=+14.5, L1=+13.2, L2=+31.7, triple_var=+23.8 |
tools/data/reports/agent_20260506_1955.md:42:| Poisson | 0.625 | 2.368 | 0.609 | 5 | all abs(z) <= 1.9 |
tools/data/reports/agent_20260506_1955.md:50:| GUE | 0.980 | 1.106 | 0.977 | 0.33 |
tools/data/reports/agent_20260506_1955.md:51:| Poisson | 0.714 | 2.196 | 0.572 | 5.00 |
tools/data/reports/agent_20260506_1955.md:55:1. **Structured domains compress the five canonical retention curves to one dominant coordinate in this perimeter.** Primes and GUE both have PC1 > 0.93 on average and effective rank close to 1. This does not say the domains are the same; it says uniform partial shuffle moves the canonical observables along one dominant retention mode.
tools/data/reports/agent_20260506_1955.md:57:2. **Observed collinearity breaking is concentrated in weak-denominator controls.** Poisson has the highest apparent rank among the three-run means (`2.196`), but all five observables are weak against full shuffle in every run. Prime-shuffle behaves similarly: rank is unstable and 4-5 of 5 observables are weak. This mirrors the denominator lesson from perturbation rank without repeating the perturbation-rank experiment.
tools/data/reports/agent_20260506_1955.md:59:3. **The 05-05 observable-rank result survives only after narrowing its language.** The valid statement is not "five probes are always one thing." The scoped statement is: under uniform partial shuffle and canonical observables, primes and GUE show a dominant one-coordinate retention response; controls can show larger PCA rank, but that rank is not structural when the original-vs-shuffle denominators are absent.
tools/data/reports/agent_20260506_1955.md:61:4. **GUE is the cleanest conditioning check.** In the main run, all five GUE observables pass the denominator gate and still give rank `1.060`. This makes GUE the best positive control for "low rank despite valid denominators." Poisson is the negative control for "high rank without valid denominators."
tools/data/reports/agent_20260506_1955.md:66:> observables_registry version + canonical observable list + original-vs-shuffle z per observable + control domains.
tools/data/reports/agent_20260506_1955.md:68:In this perimeter, high observable-rank is not the sign of richer structure when it appears in Poisson or prime-shuffle controls; it is a warning that retention ratios are being formed on weak denominators. The stable cross-domain result is narrower:
tools/data/reports/agent_20260506_1955.md:70:> uniform partial shuffle exposes one dominant retention coordinate in conditioned structured domains (primes, GUE), while apparent multi-coordinate behavior in Poisson/shuffle controls is denominator-weak.
tools/data/reports/agent_20260506_1955.md:73:What opens now: the next non-redundant test is not another PCA audit. It is **selective operator coupling**: use perturbations that act separately on pair-scale and triple-scale structure, but report only observables whose denominator gate survives. If selective operators rotate primes while GUE stays collinear, the lab gets a real cross-domain discriminator; if both stay collinear, the current observable suite is overcomplete for this question.
tools/data/reports/agent_20260507_0942.md:84:   protocol coordinate, not domain coordinate.
tools/data/reports/agent_20260509_1556.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE  
tools/data/reports/agent_20260509_1556.md:7:observables_used: [`SR`, `SR2`, `L1`, `L2`, `triple_var`, `extension_state`, `after_one_sided`, `after_beta`, `after_support_tier`, `endpoint_distance_one_sided_gated`] - osservabili canonici piu' stati domain-native di audit.  
tools/data/reports/agent_20260509_1556.md:9:**observable_contract**: claim=`blank_thin_support` sopravvive solo se, dopo estensione del denominatore sorgente, resta supporto vivo sottile senza beta chart; observable=gate canonico one-sided + beta chart sulle tre righe short; operator=`exp_boundary_short_denominator_extension.py`; generator=`source-denominator extension` per `percolation`, `random_matrix`, `zeta_zeros`; denominator=3 righe short del report 15:48, estese a `n_gaps=1024`; non_possible=promuovere `blank_thin_support` se il supporto cade, si ispessisce o recupera beta; not_tested=redesign globale 13 righe, fit `V_c`, validita' della label GUE/Poisson sorgente.
tools/data/reports/agent_20260509_1556.md:13:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + boundary operator + nodo regressivo `short_denominator`.
tools/data/reports/agent_20260509_1556.md:15:- **Piano superiore**: sheaf locale del boundary. La sezione locale cambia quando il denominatore viene esteso: il bordo non e' la label del dominio, e' la sezione che resta compatibile con gli osservabili.
tools/data/reports/agent_20260509_1556.md:16:- **Operatori laterali scelti**: boundary operator, filtrazione per denominatore, sheaf locale. Servono a riparare il nodo sorgente senza aggiungere un gate globale.
tools/data/reports/agent_20260509_1556.md:24:- `why`: esegue la direzione valutatore `same_frame_boundary_denominator_extension`, attaccando il nodo regressivo indicato dal report 15:48.
tools/data/reports/agent_20260509_1556.md:25:- `not_drift`: non torna a `V_c`, non cambia tensione, non usa label GUE/Poisson come decision field; modifica solo il denominatore delle tre righe short.
tools/data/reports/agent_20260509_1556.md:34:- Nuovo strumento: `tools/exp_boundary_short_denominator_extension.py`.
tools/data/reports/agent_20260509_1556.md:35:- Input sorgente: `tools/data/boundary_blank_thin_support_audit_20260509_1548.json`.
tools/data/reports/agent_20260509_1556.md:36:- Output: `tools/data/boundary_short_denominator_extension_20260509_1556.json`.
tools/data/reports/agent_20260509_1556.md:39:- Gate: stesso schema canonical original-vs-shuffle e beta interpolation del semireal boundary gate.
tools/data/reports/agent_20260509_1556.md:40:- Label policy: i nomi riga selezionano il perimetro short; le label GUE/Poisson non entrano nel decision field.
tools/data/reports/agent_20260509_1556.md:81:`blank_thin_support` = failure mode stabile del boundary.
tools/data/reports/agent_20260509_1556.md:92:Il prossimo ciclo BOUNDARY non deve piu' cercare una classe `blank_thin_support`. Deve separare i tre esiti emersi: `percolation` come supporto non replicato, `random_matrix` come supporto forte beta-blank, `zeta_zeros` come beta recuperata. Il nodo ancora vivo e' il blank medio/forte senza beta, non il blank sottile.
tools/data/reports/agent_20260509_1556.md:95:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/dnd_scenario.py --best`, report `agent_20260509_1548.md`, script `tools/exp_boundary_short_denominator_extension.py`, output `tools/data/boundary_short_denominator_extension_20260509_1556.json`.
tools/data/reports/agent_20260509_1556.md:98:- **L3 no silent patching**: l'estensione cambia il generatore operativo in modo dichiarato: percolation site samples, GUE block spacings, zeta zeros first spacings.
tools/data/reports/agent_20260509_1556.md:106:- Verifica script: `python -m py_compile tools/exp_boundary_short_denominator_extension.py`.
tools/data/reports/agent_20260509_1556.md:107:- Run valido: `python tools/exp_boundary_short_denominator_extension.py --out tools/data/boundary_short_denominator_extension_20260509_1556.json`.
tools/data/reports/agent_20260509_1556.md:113:- Script nuovo: `tools/exp_boundary_short_denominator_extension.py`
tools/data/reports/agent_20260509_1556.md:114:- Data: `tools/data/boundary_short_denominator_extension_20260509_1556.json`
tools/data/reports/agent_20260423_0330.md:5:**Tension explored**: BOUNDARY (0.8) + TWO_CHANNEL_DECOMPOSITION (consecutio)
tools/data/reports/agent_20260423_0330.md:8:> The boundary between GUE and Poisson regimes should affect the two-channel decomposition. If gap correlations decay with prime scale (Brody β → 0), does the Markov-3 ordering information in the residue channel also decay?
tools/data/reports/agent_20260423_0330.md:11:How does the Markov-3 ordering fraction (the 55% sequential information found by the shuffle audit) change as a function of prime scale? Does it track the GUE→Poisson drift measured by the Brody parameter?
tools/data/reports/agent_20260423_0330.md:19:- **Additional metrics**: Brody β (GUE/Poisson indicator), lag-1 ACF
tools/data/reports/agent_20260423_0330.md:58:2. **Brody β decays 5x faster toward Poisson.** β drops from 0.42 to 0.29 over the same range (R²=0.72). Gap-level correlations (the GUE signature) decorrelate with scale. But this decorrelation does NOT propagate into the mod-6 sequential memory.
tools/data/reports/agent_20260423_0330.md:67:**NEW + CONSTRAINT on BOUNDARY + TWO_CHANNEL_DECOMPOSITION**
tools/data/reports/agent_20260423_0330.md:69:The BOUNDARY tension (GUE→Poisson) operates in the magnitude channel (gap correlations, Brody β). It does NOT operate in the residue channel (Markov-3 memory). The two-channel decomposition separates scale-dependent structure from scale-invariant structure. This is a structural result: the "boundary" lives in one channel, not both.
tools/data/reports/agent_20260423_0330.md:71:Constraint: future BOUNDARY experiments should distinguish which channel they're measuring. The GUE/Poisson transition is a gap-level phenomenon; the residue channel is immune to it.
tools/data/reports/agent_20260423_0330.md:78:- **Campo di possibilita**: qui diventa possibile separare le proprieta del gap dei primi in scala-dipendenti (che decadono con PNT) e scala-invarianti (che sono vincoli permanenti). Qui diventa non-possibile usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati.
tools/data/reports/report_20260304_0342.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260304_0342.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260304_0342.md:26:- brownian_motion_var_0.5: r=0.09164859002169198, spacing=Poisson-like
tools/data/reports/report_20260304_0342.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260304_0342.md:28:- percolation_var_0.55: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260304_0342.md:29:- percolation_var_0.65: r=0.9992156862745099, spacing=Poisson-like
tools/data/reports/agent_20260430_1905.md:1:# Agent Report — Observable Coherence at the GUE-Poisson Boundary: Primes Are Not "Between" — They Are Dipolar
tools/data/reports/agent_20260430_1905.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8) + DUALITA_DIPOLARE_VS_ILLUSORIA (0.9)
tools/data/reports/agent_20260430_1905.md:9:> Do different observables agree on WHERE primes sit between GUE and Poisson?
tools/data/reports/agent_20260430_1905.md:11:> If no → the disagreement reveals structure (BOUNDARY as terzo incluso).
tools/data/reports/agent_20260430_1905.md:15:Five independent observables each place prime gaps on a τ ∈ [0,1] scale where 0 = Poisson and 1 = GUE. Do these five τ values cluster tightly (coherent — one underlying quantity) or spread apart (incoherent — genuinely independent measurements)?
tools/data/reports/agent_20260430_1905.md:22:- **Each normalized** to τ ∈ [0,1] using analytic Poisson and GUE reference values
tools/data/reports/agent_20260430_1905.md:25:- **References**: pure GUE from 50 random Hermitian matrices, pure Poisson from exponential draws
tools/data/reports/agent_20260430_1905.md:29:### τ values (0 = Poisson, 1 = GUE)
tools/data/reports/agent_20260430_1905.md:54:| spacing_ratio | **−0.125** | **Ordering pushes toward Poisson** |
tools/data/reports/agent_20260430_1905.md:55:| lag1_acf | **+0.200** | **Ordering pushes toward GUE** |
tools/data/reports/agent_20260430_1905.md:70:2. **The two ordering-sensitive observables form a dipole.** Spacing ratio is pushed TOWARD Poisson by ordering (Δτ = −0.12), while lag-1 autocorrelation is pushed TOWARD GUE (Δτ = +0.20). The same physical phenomenon — consecutive gap anticorrelation (Lemke Oliver-Soundararajan type) — manifests as Poisson in one measure and GUE in another. Primes are not "between" GUE and Poisson on a single axis. They are dipolar: GUE in correlation structure, Poisson in consecutive ratio behavior.
tools/data/reports/agent_20260430_1905.md:74:4. **Universal Poisson drift confirmed.** All five τ values decrease with scale (Δτ ≈ −0.14 to −0.19 from 10⁴ to 5·10⁶). This confirms the Brody flow finding from the previous run. The drift rate is roughly constant per observable, suggesting a single underlying process.
tools/data/reports/agent_20260430_1905.md:80:**NEW (dipolar ordering signature) + CONSTRAINT on META + CONFIRMED (Poisson drift)**
tools/data/reports/agent_20260430_1905.md:84:- **BOUNDARY**: the boundary is not a point on a one-dimensional axis between GUE and Poisson. It is a two-dimensional structure: one axis for distribution (all observables agree), one axis for ordering (the dipole between spacing_ratio and lag1_acf). The terzo incluso is the dipole — it doesn't interpolate between GUE and Poisson, it has a structure that neither has.
tools/data/reports/agent_20260430_1905.md:90:- **Due radici** (dipolo primario): spacing_ratio (ordering → Poisson) and lag1_acf (ordering → GUE). The same phenomenon — consecutive gap anticorrelation — is seen as repulsion by one observable and as correlation by the other. The two faces are structurally inverted: one says "more random" where the other says "more structured."
tools/data/reports/agent_20260430_1905.md:94:- **Invariante di passaggio**: the 2x coherence enhancement. Across all 4 scales, prime ordering makes observables agree more (std ratio ≈ 0.5). This ratio is scale-invariant even as all τ values drift toward Poisson.
tools/data/reports/agent_20260430_1905.md:96:- **Campo di possibilità**: possibile → characterize prime ordering as a 2D vector (spacing_ratio shift, lag1_acf shift) rather than a single GUE-Poisson interpolation parameter. Non-possibile → reduce prime ordering to a single β value and claim it captures the structure.
tools/data/reports/agent_20260430_1905.md:106:- Script: `tools/exp_boundary_coherence.py`
tools/data/reports/agent_20260430_1905.md:107:- Data: `tools/data/boundary_coherence.json`
tools/data/reports/agent_20260425_0330.md:1:# Agent Report — Markov Memory Is Channel-Specific: 140x Algebraic vs Statistical in Primes, Ordering-GUE Has No Algebraic Channel
tools/data/reports/agent_20260425_0330.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8) + TWO_KINDS_GUE (consecutio)
tools/data/reports/agent_20260425_0330.md:8:> The TWO_KINDS_GUE result (2026-04-24) discriminated distribution-GUE (primes, GUE matrices) from ordering-GUE (fibonacci, coupled_osc, percolation). The Markov-3 result (2026-04-23) found 33.6% scale-invariant ordering memory in prime gap residues. Do ordering-GUE domains have the same kind of Markov memory as primes?
tools/data/reports/agent_20260425_0330.md:11:What is the Markov memory profile of each GUE type? If ordering-GUE domains get their classification FROM sequential ordering, they should have high Markov memory. But in which channel — magnitude (gap size) or residue (algebraic structure)?
tools/data/reports/agent_20260425_0330.md:14:- **Method**: Classify gap sequences into terciles (S/M/L), compute conditional entropy H_k at Markov orders k=1,2,3, compare H_real vs H_shuffled (200 shuffles per domain)
tools/data/reports/agent_20260425_0330.md:17:- **Domains**: 8 domains across 3 GUE types (distribution-GUE, ordering-GUE, Poisson)
tools/data/reports/agent_20260425_0330.md:19:- **Null baseline**: 200 random permutations per domain (same distribution, destroyed order)
tools/data/reports/agent_20260425_0330.md:23:### Markov memory by domain (tercile classification)
tools/data/reports/agent_20260425_0330.md:27:| primes | dist-GUE | 17983 | 0.2 | 0.3 | 0.4 | -22.1 | -14.3 | 44% |
tools/data/reports/agent_20260425_0330.md:28:| gue_matrix | dist-GUE | 86 | -1.6 | 0.2 | 4.6 | 1.0 | -0.7 | n/a |
tools/data/reports/agent_20260425_0330.md:29:| coupled_osc | ord-GUE | 2002 | 0.7 | 1.3 | 1.5 | -12.0 | -6.7 | 42% |
tools/data/reports/agent_20260425_0330.md:30:| string_vib | ord-GUE | 7999 | 0.2 | 0.9 | 1.4 | -12.2 | -24.8 | 14% |
tools/data/reports/agent_20260425_0330.md:31:| percolation | ord-GUE | 195 | 1.4 | 2.8 | 3.9 | -1.8 | -1.2 | 35% |
tools/data/reports/agent_20260425_0330.md:32:| poisson | Poisson | 5000 | -0.0 | -0.1 | -0.2 | 0.9 | 2.3 | n/a |
tools/data/reports/agent_20260425_0330.md:33:| logistic | Poisson | 4999 | 98.8 | 99.0 | 99.0 | -3939 | -1031 | 100% |
tools/data/reports/agent_20260425_0330.md:34:| brownian | Poisson | 4999 | 12.7 | 38.9 | 46.6 | -449 | -442 | 27% |
tools/data/reports/agent_20260425_0330.md:50:2. **Ordering-GUE domains have no algebraic channel.** They have only tercile-type (magnitude) memory: 0.2-1.5% at order 1, comparable to primes in the same channel. But primes have the mod-6 channel ON TOP — which ordering-GUE domains lack entirely. No natural modular structure exists for eigenvalue spacings or percolation clusters.
tools/data/reports/agent_20260425_0330.md:52:3. **Saturation depth is an orthogonal axis to GUE type.** The fraction of memory captured at order-1 varies independently of whether a domain is distribution-GUE or ordering-GUE:
tools/data/reports/agent_20260425_0330.md:53:   - String vibration (ord-GUE): 14% — deep, higher-order correlations dominate. Fibonacci quasiperiodicity requires long-range correlations.
tools/data/reports/agent_20260425_0330.md:54:   - Primes (dist-GUE): 44% — moderate depth.
tools/data/reports/agent_20260425_0330.md:55:   - Coupled oscillators (ord-GUE): 42% — moderate depth, similar to primes despite different GUE type.
tools/data/reports/agent_20260425_0330.md:56:   - Logistic (Poisson): 100% — shallow, deterministic, order-1 is sufficient.
tools/data/reports/agent_20260425_0330.md:58:4. **The "Poisson" class is heterogeneous in Markov memory.** Pure Poisson has zero memory (control: passed). But logistic (98.8%) and Brownian (12.7%) are Poisson-classified by r-statistic yet have massive ordering memory. The r-statistic classification misses an entire axis of variation. Ordering memory that doesn't create level repulsion is invisible to the r-test.
tools/data/reports/agent_20260425_0330.md:60:5. **The two-channel structure of primes is unique among all 8 domains tested.** Only primes have:
tools/data/reports/agent_20260425_0330.md:64:   No other domain has two structurally distinct memory channels. This is a concrete expression of C1 (primes as unique dynamic domain under M).
tools/data/reports/agent_20260425_0330.md:67:**NEW + CONSTRAINT on TWO_KINDS_GUE + BOUNDARY + C1**
tools/data/reports/agent_20260425_0330.md:69:The TWO_KINDS_GUE classification (distribution vs ordering) captures WHERE structure lives. This experiment adds a second axis: HOW the memory is structured. Primes are the only domain with dual-channel memory (algebraic + statistical). The 33% scale-invariant memory is a Z/6Z phenomenon with no analogue in ordering-GUE domains. The boundary (GUE/Poisson) is a 1D projection of a 2D structure: GUE type x memory depth.
tools/data/reports/agent_20260425_0330.md:76:- **Campo di possibilita**: qui diventa possibile → discriminare domini non solo per GUE type (delta_r sign) ma per profondita e struttura della memoria (algebraica vs statistica). Due assi ortogonali, non uno. Qui diventa non-possibile → trattare il 33% di Markov memory come una proprieta "generica" di sequenze ordinate. E specifica dei primi e del canale Z/6Z.
tools/data/reports/agent_20260421_0330.md:90:The residue channel is algebraically closed at order 3. Its PSD slope, ACF amplitude (exp_0419), and spectral shape are all determined by short-range Z/6Z transition statistics. The two-channel decomposition framework now has a sharp boundary:
tools/data/reports/agent_20260421_0330.md:95:This constrains META: residue channel tests pass because they test robust algebraic properties of Z/6Z structure, not because they're tautological. The real discriminant for C1 (primes as unique domain) lives in the magnitude channel.
tools/data/reports/agent_20260508_2121.md:8:**observable_contract**: claim=la classe zero Mobius resta informativa dopo controllo per lunghezza del gap; observable=low_low_zero_minus_nonzero, high_high_zero_minus_nonzero, sr_zero_minus_nonzero sotto null stratificato; operator=shuffle delle cariche Mobius intervallari solo dentro bucket di lunghezza gap; generator=prime gaps up to p<=1e6 with Mobius sieve; denominator=main N={5000,10000,20000} offset=0 plus seedcheck offsets {3000,7000,11000}; not_tested=gap_ratio Sturmian, high-core phi survival, universal GUE/Poisson classification, det(M) diretto.
tools/data/reports/agent_20260508_2121.md:11:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto vuoto + DUALITA_DIPOLARE_VS_ILLUSORIA + nodo regressivo del cycle 2108: lo zero Mobius puo' essere boundary aritmetico oppure effetto della lunghezza dell'intervallo.
tools/data/reports/agent_20260508_2121.md:13:- **Piano superiore**: boundary operator su grafo aritmetico stratificato. Il bordo non viene giudicato dalla statistica globale: viene passato attraverso classi di lunghezza che preservano la prima sorgente banale del segnale.
tools/data/reports/agent_20260508_2121.md:14:- **Operatori laterali scelti**: boundary operator, filtrazione, random walk. Boundary operator definisce il gap prime-free; filtrazione separa low/mid/high gap; random walk entra come permutazione locale delle cariche dentro la stessa classe di lunghezza.
tools/data/reports/agent_20260508_2121.md:27:Lo zero Mobius del boundary prime-free separa ancora low-core/high-tail quando la lunghezza del gap e' gia' conservata dal null, oppure il segnale low/high del cycle 2108 era denominatore di lunghezza?
tools/data/reports/falsifier_20260515_1826.json:10:      "evidence": "`seme.json.direzione` viva è: \"Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo\". Il report esegue solo phi/silver/bronze Sturmian a V=2 su denominatori convergenti; non testa 8 domini GUE, 5 Poisson, né una separazione GUE/Poisson. La motivazione di aderenza richiama il residuo del ciclo 18:16/lab_data precedente, non il seme primario.",
tools/data/reports/falsifier_20260515_1826.json:11:      "suggestion": "Nel prossimo ciclo formulare `direction_adherence` contro `seme.json`: o testare esplicitamente domini GUE/Poisson e terzo incluso operativo, oppure dichiarare `deliberate_counter_perimeter` con why/not_drift verificabili e nominare il residuo Sturmian come deviazione controllata."
tools/data/reports/falsifier_20260515_1826.json:14:  "summary": "Il report è internamente coerente sui dati Sturmian, ma si rompe su L8: dichiara aderenza alla direzione viva mentre lavora il residuo Sturmian precedente invece del confine 8 GUE / 5 Poisson richiesto dal seme."
tools/data/reports/agent_20260511_0330.md:4:**Tension explored**: BOUNDARY (0.8)  
tools/data/reports/agent_20260511_0330.md:8:**observable_contract**: claim=`prime_persistent_blank` e' isolato solo se `numeri_primi:cycle_3` resta `beta_absent_blank` attraverso provider, offset row-local e seed shift con `SR` come osservabile one-sided comune; observable=`case_state` + firma osservabili one-sided focalizzata su `SR`; operator=`exp_prime_persistent_blank_gate.py`; generator=primi via `row_spacings("numeri_primi")` e `prime_gap_sequence`, controlli via GUE random matrix blocks e logistic return intervals; denominator=8 finestre prime da 1024 gap (2 provider x 4 offset) + 8 controlli cross-dominio; non_possible=`prime_persistent_blank` se una finestra prime recupera beta/perde supporto o se i controlli condividono la stessa firma blank-SR; not_tested=atlante beta globale, `V_c`, `gap_ratio`, validita' label sorgente GUE/Poisson.
tools/data/reports/agent_20260511_0330.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + BOUNDARY residuo `numeri_primi:cycle_3`.
tools/data/reports/agent_20260511_0330.md:15:- **Proto-ipotesi**: il residuo prime e' strutturale solo se il blank beta-absent sopravvive a provider e offset; se sopravvive solo `SR`, la struttura non e' `blank`, e' `SR-supported boundary`.
tools/data/reports/agent_20260511_0330.md:40:- Controlli: 4 GUE random matrix blocks + 4 logistic return interval rows.
tools/data/reports/agent_20260511_0330.md:75:4. **Inferito dal perimetro dichiarato**: il residuo dei primi non e' `prime_persistent_blank`; e' `prime_SR_persistent_boundary` con coordinata beta chart-sensitive.
tools/data/reports/agent_20260511_0330.md:102:- rinominare il residuo prime in `prime_SR_persistent_boundary`;
tools/data/reports/agent_20260511_0330.md:108:ssp_value: yes. Lo script diventa un audit riusabile per distinguere persistenza di osservabile e persistenza di blank nei residui BOUNDARY senza rigenerare l'atlante globale.
tools/data/reports/next_exec_20260307_0342.json:16:        "action": "CRYSTALLIZE: TRANS_BOUNDARY_TEST_THRESHOLDS — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/report_20260307_0342.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260307_0342.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260307_0342.md:26:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260307_0342.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260307_0342.md:28:- percolation_var_0.55: r=1.0384615384615385, spacing=Poisson-like
tools/data/reports/report_20260307_0342.md:29:- percolation_var_0.65: r=0.9642857142857143, spacing=Poisson-like
tools/data/reports/report_20260303_0341.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260303_0341.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260303_0341.md:26:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260303_0341.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260303_0341.md:28:- percolation_var_0.55: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260303_0341.md:29:- percolation_var_0.65: r=1.380952380952381, spacing=Poisson-like
tools/data/reports/exp_desitter_unification.json:5:  "tension": "METRIC_TENSOR + BRODY_CROSSOVER + BOUNDARY + GAP_ANTICORR",
tools/data/reports/report_20260402_0344.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260402_0344.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=1.0000 (GUE standard=0.60)
tools/data/reports/report_20260402_0344.md:25:- percolation_var_0.55: r=0.7543859649122806, spacing=Poisson-like
tools/data/reports/report_20260402_0344.md:26:- numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like
tools/data/reports/report_20260402_0344.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260402_0344.md:28:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/falsifier_20260501_0330.json:17:      "evidence": "Dai numeri visibili: GUE e' a -97 deg, Markov-1 a -114.6, real primes a -111.9. Markov-1 e' piu' lontano da GUE del reale, quindi non puo' spiegare semplicemente l'80% della separazione angolare real-GUE. Il report usa una ratio percentuale senza definire il denominatore: angolo da GUE, distanza vettoriale |d|, o componente proiettata nel piano SR/L1.",
tools/data/reports/agent_20260426_0330.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8) + DUAL_CHANNEL_MEMORY (consecutio)
tools/data/reports/agent_20260426_0330.md:9:> BOUNDARY: 8 domains GUE, 5 Poisson — where is the boundary?
tools/data/reports/agent_20260426_0330.md:13:Does spectral rigidity (number variance Sigma^2(L)) — an observable independent from the r-statistic — confirm or refute our GUE/Poisson classification? And does the dual-channel structure (magnitude vs algebraic ordering) manifest at the level of long-range spectral statistics?
tools/data/reports/agent_20260426_0330.md:17:- **Theory**: GUE predicts Sigma^2(L) ~ (2/pi^2) ln(L), Poisson predicts Sigma^2(L) = L
tools/data/reports/agent_20260426_0330.md:18:- **Domains**: 8 domains (primes, GUE matrices, coupled_osc, string_vib, percolation, logistic, brownian, Poisson random)
tools/data/reports/agent_20260426_0330.md:20:- **Unfolding**: Primes use Li(p) = p/ln(p) (proper density correction). Other domains use local mean normalization.
tools/data/reports/agent_20260426_0330.md:21:- **Null baseline**: 50 shuffles per domain (same gap distribution, destroyed sequential ordering)
tools/data/reports/agent_20260426_0330.md:22:- **Metric**: Sig2/L ratio (GUE << 1, Poisson = 1), log-log slope, ordering fraction = (Sig2_shuf - Sig2_real) / Sig2_shuf
tools/data/reports/agent_20260426_0330.md:26:### Cross-domain classification (crude unfolding, L=10)
tools/data/reports/agent_20260426_0330.md:30:| gue_matrix | dist-GUE | 359 | 0.073 | 0.452 | 0.195 | -4.8 | YES |
tools/data/reports/agent_20260426_0330.md:31:| primes* | dist-GUE | 5132 | 0.510 | 1.058 | 0.576 | -1.5 | NO |
tools/data/reports/agent_20260426_0330.md:32:| coupled_osc | ord-GUE | 2002 | 4.491 | 1.637 | 2.108 | 17.8 | NO |
tools/data/reports/agent_20260426_0330.md:33:| string_vib | ord-GUE | 7999 | 2.837 | 1.606 | 1.285 | 23.8 | NO |
tools/data/reports/agent_20260426_0330.md:34:| percolation | ord-GUE | 199 | 1.969 | 1.416 | 1.222 | 3.3 | NO |
tools/data/reports/agent_20260426_0330.md:35:| logistic | Poisson | 4999 | 462.4 | 0.757 | 1318.9 | -0.4 | YES |
tools/data/reports/agent_20260426_0330.md:36:| brownian | Poisson | 4999 | 9.250 | 1.433 | 0.600 | 287.1 | YES |
tools/data/reports/agent_20260426_0330.md:37:| poisson | Poisson | 10000 | 1.050 | 0.999 | 1.014 | 0.6 | YES |
tools/data/reports/agent_20260426_0330.md:56:Log-log slope: real = 0.737, shuffle = 0.971. GUE theory ≈ 0.3, Poisson = 1.0.
tools/data/reports/agent_20260426_0330.md:58:### Ordering-GUE paradox
tools/data/reports/agent_20260426_0330.md:60:Ordering-GUE domains (coupled_osc, string_vib, percolation) show Sig2/L > 1 — they are SUPER-Poisson. The ordering creates excess clustering (bunching), not repulsion. Shuffling REDUCES their variance (z = 3 to 24). The r-statistic sees nearest-neighbor repulsion; Sig2 sees long-range bunching. These are two different properties.
tools/data/reports/agent_20260426_0330.md:68:3. **Only true GUE matrices are rigid at all scales (Sig2/L = 0.073 at L=10).** Primes live in an intermediate regime (0.376 at L=10) — more rigid than Poisson, less rigid than GUE. This is NOT a failure of GUE classification — it's a finer structure that the r-statistic cannot resolve.
tools/data/reports/agent_20260426_0330.md:70:4. **Ordering-GUE domains are anti-rigid at long range.** They show super-Poisson variance (Sig2/L > 1), meaning the ordering creates clustering, not repulsion. The r-statistic and Sig2 classify them differently: r sees short-range repulsion, Sig2 sees long-range bunching.
tools/data/reports/agent_20260426_0330.md:72:5. **META resolved: the tests are not tautological, but they are incomplete.** The r-statistic captures genuine structure (short-range spacing repulsion) confirmed by an independent observable. But Sig2(L) reveals richer structure that the r-statistic cannot see. The 8/5 GUE/Poisson split is a projection of a higher-dimensional reality.
tools/data/reports/agent_20260426_0330.md:75:**NEW + CONSTRAINT on META + BOUNDARY + DUAL_CHANNEL_MEMORY + C1**
tools/data/reports/agent_20260426_0330.md:78:- BOUNDARY: The boundary is not a line separating GUE from Poisson. It is a surface in the (short-range, long-range, ordering-fraction) space. Primes sit in the interior of this surface, not at a boundary.
tools/data/reports/agent_20260426_0330.md:80:- C1: Primes remain unique — the only domain where ordering INCREASES rigidity at long range while maintaining intermediate short-range repulsion. GUE matrices have stronger short-range repulsion; ordering-GUE domains have anti-rigidity at long range.
tools/data/reports/agent_20260426_0330.md:87:- **Campo di possibilità**: diventa possibile predire la rigidità a scala L dalla decomposizione (distribuzione + ordinamento) con due parametri indipendenti. Diventa non-possibile trattare i primi come "GUE" o "Poisson" — vivono in un continuo parametrizzato dalla scala, e nessun singolo numero li classifica.
tools/data/reports/agent_20260426_0330.md:90:- Script: `tools/exp_spectral_rigidity.py` (cross-domain, riusabile con qualsiasi dominio)
tools/data/reports/agent_20260509_1444.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE
tools/data/reports/agent_20260509_1444.md:8:**observable_contract**: claim=il gate BOUNDARY trasferisce fuori dal perimetro base come operatore `null_state -> transfer_state -> denominator_state`; observable=stable canonical observables contro permutation null e layer classification; operator=`exp_denominator_gate_transfer_matrix.py`; generator=`DUALITA_golden`, `R_periodic_triad`, `T_markov_alternating`, `E_ar1_continuity`; denominator=4 perimetri sintetici QxG continuo/discreto, 4096 gaps, 24 replicates, 11 beta layers, 40 shuffle baselines; non_possible=chiamare chiusura QxG, legge GUE/Poisson o endpoint-stable universale; not_tested=perimetro fisico reale, fit `V_c`, nuovi domini autoricerca.
tools/data/reports/agent_20260509_1444.md:11:- **Prima impressione**: dopo 13/13 transfer sul perimetro base, il confine non chiede un altro blank audit. Chiede se il gate resta gate quando non porta piu' le etichette GUE/Poisson.
tools/data/reports/agent_20260509_1444.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + BOUNDARY completo 13/13 + tensione `TRASCENDENZA_LIMITE`.
tools/data/reports/agent_20260509_1444.md:14:- **Piano superiore**: grafo della conoscenza e boundary operator. Il gate viene letto come mappa di passaggio tra stato coerente, stato null e denominatore, non come tassonomia locale.
tools/data/reports/agent_20260509_1444.md:15:- **Operatori laterali scelti**: boundary operator, graph/perimeter transfer matrix, shuffle marginal-preserving. Entrano per trasferire il gate senza importare il label GUE/Poisson.
tools/data/reports/agent_20260509_1444.md:17:- **Proto-ipotesi**: il gate BOUNDARY trasferisce quando il polo coerente ha osservabili one-sided contro il proprio null e il polo illusorio collassa; non trasferisce come endpoint-stable universale.
tools/data/reports/agent_20260509_1444.md:22:> Il gate BOUNDARY trasferisce fuori dal perimetro base se ogni perimetro mostra osservabili one-sided al polo coerente, collasso al polo null permutato, e un layer blank/ambiguous esplicito prima del passaggio.
tools/data/reports/agent_20260509_1444.md:25:Quando il gate viene mosso da BOUNDARY base a quattro perimetri QxG sintetici, resta transfer, cade, o produce un blank strutturale?
tools/data/reports/agent_20260509_1444.md:72:Il gate BOUNDARY trasferisce fuori dal perimetro base come operatore di ordine/null: 4/4 perimetri hanno polo coerente leggibile, polo illusorio collassato e blank strutturale a beta 0.3. Il transfer non e' chiusura QxG. Il transfer non e' endpoint-stable universale, perche' nessun perimetro conserva osservabili stabili su entrambi i poli.
tools/data/reports/agent_20260509_1444.md:83:- **Invariante di passaggio**: osservabile one-sided contro null permutato; non il label GUE/Poisson e non un set canonico completo.
tools/data/reports/agent_20260509_1444.md:84:- **Campo di possibilita**: qui diventa possibile usare BOUNDARY come transfer matrix per perimetri sintetici QxG; qui diventa non-possibile dichiarare QxG chiuso o trattare il gate come endpoint-stable law.
tools/data/reports/exp_number_variance_test.json:4:  "claim_under_test": "BOUNDARY: GUE->Poisson drift in primes",
tools/data/reports/exp_number_variance_test.json:5:  "method": "Number variance Sigma^2(L) at 5 scales, compared with GUE and Poisson predictions",
tools/data/reports/agent_20260505_1022.md:20:- dati: `primes` con 8000 gap, `GUE` con 175 spacing effettivi prodotti dal generatore corrente, `Poisson` con 8000 spacing;
tools/data/reports/agent_20260505_1022.md:44:Su GUE il campione effettivo e' piccolo (`N=175`), quindi il risultato e' solo indicativo:
tools/data/reports/agent_20260505_1022.md:55:Poisson resta quasi nullo rispetto a SR/SR2/triple_var: molte curve non attraversano `|z| >= 2`. Questo e' coerente con un controllo a bassa struttura, non con una prova di assenza assoluta.
tools/data/reports/agent_20260505_1022.md:59:Il claim precedente "i due Markov layer sono coupled al boundary" va ristretto:
tools/data/reports/agent_20260505_1022.md:63:Questo non falsifica l'esistenza del boundary. Falsifica il framing piu' forte: "un boundary unico per i layer". Il confine osservato e' una superficie operatore-dipendente. Il terzo incluso operativo non e' il valore alpha in se': e' la trasformazione che decide quali correlazioni vengono conservate.
tools/data/reports/agent_20260505_1022.md:67:**CONSTRAINT on META + BOUNDARY**: non aggregare gli osservabili in "Layer 1" e "Layer 2" senza dichiarare l'operatore di perturbazione. Nel perimetro `N=8000, n_surr=8`, `cond_entropy` e `triple_var` non sono intercambiabili con `SR2/L2` come prove di Layer 2.
tools/data/reports/agent_20260505_1022.md:75:L2 quantita' assoluta vs ratio: il confronto usa alpha critici e z-score, non percentuali tra spazi di taglia diversa. GUE ha perimetro ridotto (`N=175`) e non viene pesato come primes/Poisson.
tools/data/reports/agent_20260505_1022.md:77:L3 no silent patching: il claim precedente viene ristretto esplicitamente. "Coupled boundary" resta valido solo per il partial-shuffle gia' misurato, non come proprieta' generale dei layer.
tools/data/reports/mapping_validation_2026-04-21.json:57:    "tension": "BOUNDARY",
tools/data/reports/mapping_validation_2026-04-21.json:228:    "tension": "DIPOLAR_ILLUSORY_BOUNDARY",
tools/data/reports/mapping_validation_2026-04-21.json:558:    "tension": "TRANS_BOUNDARY_FALSIFICA_F6",
tools/data/reports/mapping_validation_2026-04-21.json:569:    "tension": "TRANS_BOUNDARY_METRIC_TENSOR",
tools/data/reports/agent_20260508_1632.md:24:| domain | conditions | global Jaccard median | global Jaccard min | phase Jaccard median | threshold Jaccard median | scale Jaccard median | core labels all conditions |
tools/data/reports/agent_20260508_1632.md:33:| domain | median label error | median selected gaps | median large gaps |
tools/data/reports/report_20260305_2121.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260305_2121.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260305_2121.md:26:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260305_2121.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260305_2121.md:28:- percolation_var_0.55: r=0.6944444444444445, spacing=Poisson-like
tools/data/reports/report_20260305_2121.md:29:- percolation_var_0.65: r=1.0454545454545456, spacing=Poisson-like
tools/data/reports/agent_20260509_0819.md:7:observables_used: [`label_jaccard`, `hamming_ratio`, `source_mode`, `acceptance_rate`, `event_type`, `vc_interp`, `r_floor`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
tools/data/reports/agent_20260509_0819.md:8:**observable_contract**: claim=un generatore non-Sturmian puo' preservare il label-set phi a N=144 con `label_jaccard>=0.75` e distanza non triviale; observable=`label_jaccard`, `hamming_ratio`, `source_mode`, `acceptance_rate`, `event_type`, `vc_interp`, `r_floor`; operator=scansione di generatori balanced random, block shuffle, periodic approximant, Markov-density contro lettore gap-label phi; generator=non-Sturmian candidate pool; denominator=N=144, phases={0,0.25,0.5,0.75}, 2199 candidati validi post hamming gate, r_threshold={0.48,0.50,0.52}; non_possible=se passano solo generatori con memoria di blocco/periodo lungo, il null e' non-Sturmian ma non indipendente dal boundary; not_tested=trasferimento GUE/Poisson, fit power-law, scale N!=144, indipendenza fuori dal label reader phi.
tools/data/reports/agent_20260509_0819.md:13:- **Piano superiore**: topologia assiomatica del boundary. Non misuro se `V_c` converge; misuro se il lettore topologico sopravvive quando il generatore perde la grammatica Sturmian esplicita.
tools/data/reports/agent_20260509_0819.md:14:- **Operatori laterali scelti**: boundary operator, periodic approximant, graph/word cut. Il boundary operator legge il set; l'approssimante periodico rompe l'aperiodicita' mantenendo scala; il cut a blocchi separa memoria lunga da shuffle dispersivo.
tools/data/reports/agent_20260509_0819.md:17:  - **YSN DeltaLink**: il confine non e' classe GUE/Poisson ma trasporto di scala tra label reader e generatore.
tools/data/reports/agent_20260509_0819.md:22:- **Proiezione**: genero candidati non-Sturmian, applico gate `Jaccard>=0.75`, poi misuro `r(V)` solo sui best accepted per non confondere ricerca del generatore con confronto GUE/Poisson.
tools/data/reports/agent_20260509_0819.md:25:> A N=144 esiste un null non-Sturmian che conserva il label-set phi (`label_jaccard>=0.75`) con `hamming_ratio>=0.03`; se passa solo con memoria di scala lunga, il null non e' indipendente dal boundary.
tools/data/reports/agent_20260509_0819.md:71:4. **Verificato: il periodic approximant 21 conserva label-set ma rompe `V_c`.** Le `3/3` righe evento sono `no_cross`; quindi label-preserving e boundary-crossing divergono.
tools/data/reports/agent_20260509_0819.md:77:La formulazione valida e': `source_mode` Sturmian esplicito non e' necessario; memoria di scala lunga e' necessaria nel perimetro misurato. `label_jaccard>=0.75` non autorizza da solo il trasferimento GUE/Poisson: deve essere accoppiato a `event_type` e alla classe di memoria del generatore.
tools/data/reports/agent_20260509_0819.md:81:- **Singolare**: la scala 21/34 come punto dove il generatore non e' Sturmian nominale ma porta ancora il boundary.
tools/data/reports/agent_20260509_0819.md:86:Il prossimo passo e' separare memoria lunga e crossing: variare blocco/periodo attorno a `21,34` e chiedere quando `label_jaccard` resta alto ma `internal_cross` cade. Se il punto di caduta e' netto, il boundary ha una soglia di memoria; se e' continuo, il confine e' un gradiente di trasporto.
tools/data/reports/agent_20260509_0819.md:92:- **L3 no observable drift**: `gap_ratio`, fit power-law e GUE/Poisson non sono testati.
tools/data/reports/agent_20260514_1649.md:8:**observable_contract**: claim=il candidato QxG 16:40 diventa fit-ready solo se espone input, output, soglie, trace, transfer/blank/fall e contro-perimetro; observable=`component_state(SR,L1,triple_var)` piu `poisson_contrast` e `direct_contrast`; operator=`tools/exp_physical_sr_residue_bounce.py`; generator=nessun nuovo dominio, riuso deposito GOE/GUE/Anderson 16:40 e smoke test sintetico minimo; denominator=artifact JSON fit-ready + interfaccia su spettro ordinato; non_possible=integrare automaticamente il grafo o chiamare legge fisica il tester; not_tested=dati sperimentali, Anderson 3D, many-body localization, unfolding dedicato, limite asintotico.
tools/data/reports/agent_20260514_1649.md:20:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + ponte QxG continuo/discreto + candidato graph completion 16:40 + direzione BOUNDARY GUE/Poisson.
tools/data/reports/agent_20260514_1649.md:24:- **Possibile / non-possibile**: possibile = passare uno spettro ordinato e ottenere stato componente, contrasto Poisson e contrasto diretto se classi presenti; non-possibile = usare l'artifact come ponte QxG integrato o legge fisica.
tools/data/reports/agent_20260514_1649.md:79:| GUE unitary no time reversal | active | active | active | `physical_sr_residue_bounce_20260514_1640_goe_gue_ncurve.json` |
tools/data/reports/agent_20260514_1649.md:86:| class | focus_signature | SR state vs Poisson | note |
tools/data/reports/agent_20260514_1649.md:89:| GUE smoke | SR,L1,triple_var | active | plumbing verificato, non evidenza fisica nuova |
tools/data/reports/agent_20260514_1649.md:91:Il `direct_contrast` dello smoke e' presente ma non promosso: un solo spettro per classe non fornisce una distribuzione indipendente per separazione fisica. La separazione GOE/GUE fit-ready resta quella del deposito 16:40 con 64 repliche per taglia.
tools/data/reports/agent_20260514_1649.md:95:- `transfer`: `SR,L1,triple_var` passano dal deposito matematico-fisico allo strumento come stati componente contro Poisson e, se esistono classi, come contrasto diretto.
tools/data/reports/agent_20260514_1649.md:97:- `fall`: il tester cade se GOE/GUE non separano `SR` nel contrasto diretto, se le classi caotiche assorbono tutti gli osservabili focus contro Poisson, o se Anderson `W=6` mantiene `SR` active sotto le soglie dichiarate.
tools/data/reports/agent_20260514_1649.md:104:- **Verificato da deposito 16:40**: GOE/GUE hanno `SR,L1,triple_var` active; Anderson `W=6` assorbe `SR` e conserva `triple_var`.
tools/data/reports/agent_20260514_1649.md:128:`component_state(SR,L1,triple_var)` e' fit-ready come strumento: riceve uno spettro ordinato, produce stato componente, contrasto Poisson e contrasto diretto quando il payload contiene classi. Il candidato QxG resta pronto per decisione operatore, non integrato nel grafo e non promosso a legge fisica.
tools/data/reports/incident_20260504_1138.md:21:4. Poisson è rumore da denominatore piccolo, non controesempio strutturale.
tools/data/reports/incident_20260504_1138.md:24:**CONSTRAINT on BOUNDARY + DIPOLAR_ORDERING**: il confine è una transizione unica sotto partial shuffle uniforme, ma non è indivisibile sotto perturbazioni selettive. Per i gap primi, SR2 è il coordinato operativo di profondità; triple_var va demossa ad ausiliario.
tools/data/reports/agent_20260514_1330.md:4:**Tension explored**: BOUNDARY / prime-vs-mod6 residual (0.8)  
tools/data/reports/agent_20260514_1330.md:8:**observable_contract**: claim=`prime_minus_mod6_z_delta(SR,L1,triple_var)` sopravvive a seed, provider e ampiezza finestra; observable=delta z paired prime-minus-mod6 per `SR,L1,triple_var` piu audit `has_SR`; operator=`tools/exp_prime_vs_mod6_sr_boundary.py`; generator=prime gaps da `row_spacings("numeri_primi")` e `direct_sieve`, antagonisti `6k +/- 1` index-aligned e span-matched; denominator=3 ampiezze finestra x 2 provider x 4 offsets, paired contro 2 antagonisti mod6; non_possible=residuo prime-specific se il label-swap assorbe il delta z o se il delta collassa a presenza binaria `SR`; not_tested=origine analitica del delta, scale oltre 2048 gap, beta atlas globale, `V_c`, `gap_ratio`.
tools/data/reports/agent_20260514_1330.md:16:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + BOUNDARY + direzione `SR_residual_intensity_after_mod6`.
tools/data/reports/agent_20260514_1330.md:18:- **Piano superiore**: topologia assiomatica del bordo: un boundary operator non decide per presenza/assenza, ma per differenziale che resta dopo sottrazione del pre-bordo.
tools/data/reports/agent_20260514_1330.md:19:- **Operatori laterali scelti**: boundary operator, perche' il bordo e' il luogo della sottrazione prime-minus-mod6; parallel transport, perche' provider e offset trasportano la stessa riga tra due classi senza cambiare denominatore.
tools/data/reports/agent_20260514_1330.md:29:- `not_drift`: non torna a `V_c`, GUE/Poisson, fit o vecchi depositi; stressa solo il residuo nominato dal valutatore dopo sottrazione mod6.
tools/data/reports/agent_20260514_1330.md:41:- Script: `tools/exp_prime_vs_mod6_sr_boundary.py`.
tools/data/reports/agent_20260514_1330.md:54:| 1024 | mod6_index | 8/8 | 5/8 | 0.481 | 0.000 | 1.0000 | 29.480 | 0.0061 | 31.105 | 0.0061 | 11.745 | 0.0061 | SR_PREBOUNDARY |
tools/data/reports/agent_20260514_1330.md:55:| 1024 | mod6_span | 8/8 | 5/8 | 0.377 | 0.250 | 0.4921 | 19.921 | 0.0076 | 15.302 | 0.0076 | 13.142 | 0.0076 | SR_PREBOUNDARY |
tools/data/reports/agent_20260514_1330.md:64:4. **Verificato**: il verdict nominale dello script oscilla con `window_gaps` (`not_decisive`, `preboundary`, `prime_specific`). Quell'oscillazione e' informazione sullo script: il verdict e' ancora centrato su commonality/binario, non sul vettore di intensita.
tools/data/reports/agent_20260514_1330.md:91:- `tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w512.json`
tools/data/reports/agent_20260514_1330.md:92:- `tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w512.trace.jsonl`
tools/data/reports/agent_20260514_1330.md:93:- `tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json`
tools/data/reports/agent_20260514_1330.md:94:- `tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.trace.jsonl`
tools/data/reports/agent_20260514_1330.md:95:- `tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json`
tools/data/reports/agent_20260514_1330.md:96:- `tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.trace.jsonl`
tools/data/reports/agent_20260508_1909.md:7:observables_used: [gap_label_set, supertile_boundary, length_multiset, internal_order, high_label_condition_rate]
tools/data/reports/agent_20260508_1909.md:15:- **Proiezione**: il label-set dei gap larghi manifesta la combo perche' tiene fisso il reader theta=1/phi e muove solo la relazione fra grammatica, boundary e blocco.
tools/data/reports/agent_20260508_1909.md:78:4. **Inferito dal confronto fra controlli: il portatore osservato e' ordine interno + multiset di lunghezze Fibonacci, non boundary esatto.** Il test non autorizza "il core alto vive nel confine del supertile"; autorizza "il core alto richiede ordine interno e beneficia di lunghezze supertile-like".
tools/data/reports/agent_20260508_1909.md:83:La formulazione valida e': il label-set alto phi misura una condizione congiunta di ordine interno e lunghezze Fibonacci-like; non misura ancora il boundary simbolico del supertile e non misura `gap_ratio`.
tools/data/reports/agent_20260508_1909.md:87:- **Singolare**: il chunk lungo prima della distinzione fra boundary grammaticale e blocco contiguo.
tools/data/reports/agent_20260508_1909.md:89:- **Campo di possibilita**: qui diventa possibile cercare un osservabile di boundary piu' fine del label-set; qui diventa non-possibile dichiarare che il label-set alto riconosce da solo il confine esatto del supertile.
tools/data/reports/agent_20260508_1909.md:92:Costruire un gate di boundary simbolico che non legga solo il set dei label: confrontare label-set, posizione IDS dei label core e errore di label per chunk aligned/misaligned. Se il boundary reale esiste nell'osservabile, deve apparire nella geometria degli errori o nella posizione dei gap, non nel solo all-high rate.
tools/data/reports/agent_20260508_1909.md:99:- **L5 re-discovery**: la conservazione dell'ordine interno era gia' nota dal 18:34; il nuovo finding e' la non-discriminazione del boundary esatto da parte del label-set.
tools/data/reports/agent_20260419_0755.md:77:- **Test at larger scales**: Does the alpha_res gap (1.24 vs 1.60) change with prime scale? If it narrows toward Poisson, the long-range class memory also has a crossover.
tools/data/reports/falsifier_20260508_2005.json:11:      "suggestion": "Riformulare il verdict sul nodo testato: symbolic_grammar_boundary_gate. Se QPG_GAP_RATIO_DENOMINATOR_GATE deve restare nel claim, il prossimo ciclo deve includere gap_ratio come osservabile o dichiarare il ponte regressivo tra i due gate."
tools/data/reports/agent_20260416_0330.md:68:3. **L* grows with prime scale.** From 18 (small primes, ln p ~ 15.7) to 48 (large primes, ln p ~ 18.4). The coherence length at Poisson crossover (p* ~ 10^13, ln p ~ 30) by linear extrapolation: L* ~ 18 + (48-18)/(18.4-15.7) * (30-15.7) ~ 160. Still finite — even at the crossover, windows of ~160 gaps should still distinguish primes from random.
tools/data/reports/agent_20260416_0330.md:70:4. **Two-timescale structure.** <r>_prime drifts downward (0.453 → 0.443, toward Poisson 0.386) — this is the slow drift (BOUNDARY). But delta_r is stable at -0.014 — the *relative* ordering vs shuffle doesn't decay. The dipolar signature persists as a constant offset even as both prime and shuffle <r> evolve. The drift is absolute; the dipole is relative.
tools/data/reports/agent_20260416_0330.md:84:**CONSTRAINT on POISSON_CONVERGENCE**: L* grows with scale (18 → 48), but delta_r does not decay. The Poisson crossover manifests as increasing coherence length (harder to detect the ordering in small windows) rather than decreasing ordering magnitude. The primes don't lose their dipolar structure — they become harder to distinguish from random in small samples.
tools/data/reports/agent_20260412_0330.md:7:> Two types of duality: (1) dipolar — generative, det=-1, (2) illusory — dispersive, det=+1. The drift toward Poisson should correspond to loss of det=-1 structure.
tools/data/reports/agent_20260412_0330.md:40:4. **det(M) drifts toward zero (less negative), slope = +0.003/ln(p), R^2=0.90.** Both real and shuffled drift together. The marginal distribution itself is changing — gaps become more Poisson-like (wider, more symmetric) at larger primes.
tools/data/reports/agent_20260412_0330.md:48:- **NEW**: The ordering-induced excess negativity (delta_det ~ -0.009) decays with scale (z from -3.0 to -0.9). This is a new observable that quantifies the "dipolar excess" — the gap between structure and randomness — and it converges to zero. Consistent with the 4-stage Poisson convergence hierarchy.
tools/data/reports/report_20260314_0342.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260314_0342.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260314_0342.md:26:- brownian_motion_var_0.5: r=1.032258064516129, spacing=Poisson-like
tools/data/reports/report_20260314_0342.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260314_0342.md:28:- percolation_var_0.55: r=1.0434782608695652, spacing=Poisson-like
tools/data/reports/report_20260314_0342.md:29:- percolation_var_0.65: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260315_0342.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260315_0342.md:26:- brownian_motion_var_0.5: r=1.0333333333333334, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:28:- percolation_var_0.55: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:29:- percolation_var_0.65: r=1.380952380952381, spacing=Poisson-like
tools/data/reports/agent_20260508_2133.md:8:**observable_contract**: claim=il residuo SR dello zero Mobius resta informativo dopo un null che preserva la geometria coarse della coppia di gap; observable=sr_zero_minus_nonzero, sr_aligned_minus_misaligned, low_low_zero_minus_nonzero, high_high_zero_minus_nonzero; operator=permuta label di transizione aligned/misaligned/zero dentro ogni pair bucket `(bucket(g_i), bucket(g_{i+1}))`; generator=prime gaps up to p<=1e6 with Mobius interval charges; denominator=main N={5000,10000,20000} offset=0 plus seedcheck offsets {3000,7000,11000}, 400 permutazioni, seed=2133; not_tested=gap_ratio Sturmian, V_c scaling, GUE/Poisson universale, sequenza Mobius globale coerente dopo shuffle.
tools/data/reports/agent_20260508_2133.md:13:- **Piano superiore**: boundary operator su grafo aritmetico di transizioni. Il bordo non e' letto sul singolo gap ma sulla coppia `(g_i,g_{i+1})`, dove SR misura forma e non grandezza assoluta.
tools/data/reports/agent_20260508_2133.md:14:- **Operatori laterali scelti**: boundary operator, filtrazione, random walk. Boundary operator definisce il vuoto prime-free; filtrazione costruisce i 16 pair bucket; random walk entra come permutazione locale delle classi di transizione dentro ogni bucket.
tools/data/reports/agent_20260508_2133.md:36:- Contratto osservabile-operatore: `gap_ratio`, `V_c`, domini Sturmian e GUE/Poisson non testati.
tools/data/reports/tension_projection_screening_2026-04-21.json:34:        "id": "DIPOLAR_ILLUSORY_BOUNDARY",
tools/data/reports/tension_projection_screening_2026-04-21.json:93:        "id": "BOUNDARY",
tools/data/reports/tension_projection_screening_2026-04-21.json:130:      "TRANS_BOUNDARY_FALSIFICA_F6"
tools/data/reports/tension_projection_screening_2026-04-21.json:137:      "TRANS_BOUNDARY_METRIC_TENSOR"
tools/data/tool_contracts/smoke_component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:3:    "GOE_minus_GUE": {
tools/data/tool_contracts/smoke_component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:11:      "label": "GOE_minus_GUE",
tools/data/tool_contracts/smoke_component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:65:    "poisson_contrast": "span-matched Poisson null for each class/label",
tools/data/tool_contracts/smoke_component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:120:    "GUE": {
tools/data/tool_contracts/smoke_component_state_SR_L1_triple_var_fit_ready_20260514_1649.json:140:      "label": "GUE",
tools/data/reports/agent_20260509_1427.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE
tools/data/reports/agent_20260509_1427.md:7:observables_used: [`spacing_r`, `shuffle_r_statistic`, `denominator_state`, `excluded_mass`, `transfer`] - osservabili domain-native per il gate boundary, non canonici SR/SR2/L1/L2/triple_var.
tools/data/reports/agent_20260509_1427.md:8:**observable_contract**: claim=il blank-pair test decide se due righe BOUNDARY senza null entrano nel transfer; observable=`spacing_r` originale contro permutation null row-aligned; operator=`exp_boundary_blank_null_audit.py` + prescan row-aligned; generator=`dnd_autoricerca.genera_segnale` per `zeta_zeros` e `pendolo_doppio`; denominator=13 righe base autoricerca 8 GUE-like / 5 Poisson-like; non_possible=dichiarare complete `zeta_zeros` con soli 199 gap o dichiarare cambio classe su `pendolo_doppio`; not_tested=fit `V_c`, nuovi spettri, nuova legge GUE/Poisson, chiusura QxG.
tools/data/reports/agent_20260509_1427.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + QxG continuo/discreto + nodo BOUNDARY 8 GUE / 5 Poisson + tensione `TRASCENDENZA_LIMITE`.
tools/data/reports/agent_20260509_1427.md:13:- **Dipolo / punto-zero**: blank / transfer; punto-zero = stessa riga domain/window prima della disponibilita del null row-aligned.
tools/data/reports/agent_20260509_1427.md:14:- **Piano superiore**: grafo della conoscenza e boundary operator. Il bordo non classifica GUE o Poisson; filtra quali righe hanno denominatore sufficiente.
tools/data/reports/agent_20260509_1427.md:15:- **Operatori laterali scelti**: boundary operator, shuffle marginal-preserving, grafo row-aligned. Entrano per separare osservabile locale, null e transfer senza nuovo fit.
tools/data/reports/agent_20260509_1427.md:17:- **Proto-ipotesi**: un blank BOUNDARY diventa transfer quando possiede un null row-aligned leggibile; la classe sorgente resta controllo, non risposta.
tools/data/reports/agent_20260509_1427.md:19:- **Proiezione**: verificare `boundary_blank_null_audit_20260509_1430.json` e reinnestarlo nel prescan `boundary_denominator_prescan_20260509_1430.json`.
tools/data/reports/agent_20260509_1427.md:22:> Il blank-pair test trasforma `zeta_zeros` e `pendolo_doppio` da blank a transfers; il perimetro BOUNDARY passa da 8/13 a 10/13 transfer, con 3 blank residui e 0 falls.
tools/data/reports/agent_20260509_1427.md:25:Il null row-aligned per una coppia blank GUE/Poisson decide `blank -> transfers`, `blank -> falls` o `blank remains blank`?
tools/data/reports/agent_20260509_1427.md:28:- Strumenti usati: `tools/exp_boundary_blank_null_audit.py` e `tools/exp_boundary_denominator_prescan.py`.
tools/data/reports/agent_20260509_1427.md:29:- Input verificati: `tools/data/boundary_blank_null_audit_20260509_1430.json` e `tools/data/boundary_denominator_prescan_20260509_1430.json`.
tools/data/reports/agent_20260509_1427.md:30:- Perimetro atomico: 13 righe base, 8 GUE-like e 5 Poisson-like.
tools/data/reports/agent_20260509_1427.md:32:- Contratto osservabile-operatore: il ciclo misura disponibilita e comportamento del null, non rifitta `V_c`; `zeta_zeros` resta contaminated per massa debole; `pendolo_doppio` resta Poisson -> Poisson con ordering dependence forte.
tools/data/reports/agent_20260509_1427.md:38:| domain | n_gaps | r_original | shuffle_mean | z | class | ordering_dependent | decision |
tools/data/reports/agent_20260509_1427.md:40:| zeta_zeros | 199 | 0.615009 | 0.641885 | -2.310593 | GUE -> GUE | false | transfer contaminato |
tools/data/reports/agent_20260509_1427.md:41:| pendolo_doppio | 5008 | 0.386104 | 0.292437 | 27.919656 | Poisson -> Poisson | true | transfer complete |
tools/data/reports/agent_20260509_1427.md:48:| source GUE | 8 |
tools/data/reports/agent_20260509_1427.md:49:| source Poisson | 5 |
tools/data/reports/agent_20260509_1427.md:61:2. **Verificato: il transfer non cambia la classe.** `zeta_zeros` resta GUE -> GUE; `pendolo_doppio` resta Poisson -> Poisson.
tools/data/reports/agent_20260509_1427.md:64:5. **Verificato: il perimetro BOUNDARY passa da 8/13 a 10/13 transfer.** Restano 3 blank e nessun fall.
tools/data/reports/agent_20260509_1427.md:69:Il blank-pair test trasforma `zeta_zeros` e `pendolo_doppio` da blank a transfers; il perimetro BOUNDARY passa da 8/13 a 10/13 transfer, con 3 blank residui e 0 falls.
tools/data/reports/agent_20260509_1427.md:71:Questo non chiude QxG, non dichiara una nuova legge GUE/Poisson e non rifitta `V_c`. Il risultato decide il denominatore: quando il null row-aligned esiste, il blank diventa transfer; quando manca, resta blank.
tools/data/reports/agent_20260509_1427.md:75:- **Singolare**: la riga domain/window prima della decisione del gate.
tools/data/reports/agent_20260509_1427.md:76:- **Invariante di passaggio**: il null row-aligned decide il passaggio; la classe GUE/Poisson non viene riscritta.
tools/data/reports/agent_20260509_1427.md:77:- **Campo di possibilita**: qui diventa possibile restringere il contro-perimetro BOUNDARY a 3 blank residui; qui diventa non-possibile trattare `zeta_zeros` come complete o `pendolo_doppio` come cambio classe.
tools/data/reports/agent_20260509_1427.md:80:La prossima mossa BOUNDARY non e' un fit `V_c`: e' costruire o recuperare null row-aligned per `string_vibration`, `reaction_diffusion` e `logistica_biforcazione_var_3.5699`. Il confine ora ha 10 righe trasferite e un contro-perimetro residuo esplicito.
tools/data/reports/agent_20260509_1427.md:83:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/dnd_scenario.py --best`, `tools/data/boundary_blank_null_audit_20260509_1430.json`, `tools/data/boundary_denominator_prescan_20260509_1430.json`, run di verifica in `/tmp`.
tools/data/reports/agent_20260509_1427.md:94:- Verifica script: `python -m py_compile tools/exp_boundary_blank_null_audit.py tools/exp_boundary_denominator_prescan.py`.
tools/data/reports/agent_20260509_1427.md:95:- Run valido: `python tools/exp_boundary_blank_null_audit.py --domains zeta_zeros pendolo_doppio --n-shuffle 1000 --seed 202605091430 --out /tmp/boundary_blank_null_audit_20260509_1430.verify.json`.
tools/data/reports/agent_20260509_1427.md:96:- Run valido: `python tools/exp_boundary_denominator_prescan.py --extra-null-audit tools/data/boundary_blank_null_audit_20260509_1430.json --out /tmp/boundary_denominator_prescan_20260509_1430.verify.json`.
tools/data/reports/agent_20260509_1427.md:100:- Script: `tools/exp_boundary_blank_null_audit.py`
tools/data/reports/agent_20260509_1427.md:101:- Script: `tools/exp_boundary_denominator_prescan.py`
tools/data/reports/agent_20260509_1427.md:102:- Data: `tools/data/boundary_blank_null_audit_20260509_1430.json`
tools/data/reports/agent_20260509_1427.md:103:- Data: `tools/data/boundary_denominator_prescan_20260509_1430.json`
tools/data/markov_memory_by_gue_type.json:4:  "question": "Does Markov memory discriminate distribution-GUE from ordering-GUE?",
tools/data/markov_memory_by_gue_type.json:7:      "domain": "primes",
tools/data/markov_memory_by_gue_type.json:9:      "gue_type": "distribution-GUE",
tools/data/markov_memory_by_gue_type.json:27:      "domain": "gue_matrix",
tools/data/markov_memory_by_gue_type.json:29:      "gue_type": "distribution-GUE",
tools/data/markov_memory_by_gue_type.json:47:      "domain": "percolation",
tools/data/markov_memory_by_gue_type.json:49:      "gue_type": "ordering-GUE",
tools/data/markov_memory_by_gue_type.json:67:      "domain": "coupled_oscillators",
tools/data/markov_memory_by_gue_type.json:69:      "gue_type": "ordering-GUE",
tools/data/markov_memory_by_gue_type.json:87:      "domain": "string_vibration",
tools/data/markov_memory_by_gue_type.json:89:      "gue_type": "ordering-GUE",
tools/data/markov_memory_by_gue_type.json:107:      "domain": "poisson",
tools/data/markov_memory_by_gue_type.json:109:      "gue_type": "Poisson",
tools/data/markov_memory_by_gue_type.json:127:      "domain": "logistica_biforcazione",
tools/data/markov_memory_by_gue_type.json:129:      "gue_type": "Poisson",
tools/data/markov_memory_by_gue_type.json:147:      "domain": "brownian_motion",
tools/data/markov_memory_by_gue_type.json:149:      "gue_type": "Poisson",
tools/data/reports/agent_20260512_0330.md:4:**Tension explored**: BOUNDARY (0.8)  
tools/data/reports/agent_20260512_0330.md:5:**verdict**: CONSTRAINT - `prime_SR_persistent_boundary` non chiude come firma prime-specific atomica  
tools/data/reports/agent_20260512_0330.md:8:**observable_contract**: claim=`prime_SR_persistent_boundary` regge solo se le finestre prime conservano `SR` come osservabile one-sided comune attraverso provider e offset, mentre controlli non-prime ampliati non condividono persistenza SR piena; observable=`SR` in `coherent_one_sided_observables` + firma comune one-sided; operator=`exp_prime_sr_persistent_boundary.py`; generator=primi via `row_spacings("numeri_primi")` e `prime_gap_sequence`, controlli via composite gaps, candidati mod6, eventi Cramer-like, GUE blocks, logistic return intervals; denominator=8 finestre prime row-local + 20 controlli non-prime; non_possible=claim prime-specific se `SR` prime scende sotto 8/8, se la firma comune prime non e' `[SR]`, o se una sottofamiglia controllo condivide persistenza SR piena; not_tested=atlante beta globale, `V_c`, `gap_ratio`, origine analitica di SR.
tools/data/reports/agent_20260512_0330.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + QxG continuo/discreto + BOUNDARY come passaggio 8 GUE / 5 Poisson + residuo `prime_SR_persistent_boundary`.
tools/data/reports/agent_20260512_0330.md:15:- **Operatori laterali scelti**: boundary operator, generatori non equivalenti, null label-preserving row-local. Entrano per separare supporto osservabile, carta beta e dominio sorgente.
tools/data/reports/agent_20260512_0330.md:18:- **Proiezione**: stesso gate canonico ordine/null, stesso size 1024, due provider prime, quattro offset, controlli compositi/mod6/Cramer/GUE/logistic.
tools/data/reports/agent_20260512_0330.md:23:- `why`: testa direttamente la direzione viva `prime_SR_persistent_boundary`, separando supporto osservabile `SR` da blank beta e ampliando i controlli non-prime.
tools/data/reports/agent_20260512_0330.md:37:- Controlli: composite gaps, mod6 candidates, Cramer-like events su 4 offset; 4 GUE random matrix blocks; 4 logistic return interval rows.
tools/data/reports/agent_20260512_0330.md:92:`prime_SR_persistent_boundary` come firma atomica prime-specific.
tools/data/reports/agent_20260512_0330.md:96:`SR` e' forte nei primi ma non persistente come comune 8/8; quando il contro-perimetro include candidati `6k +/- 1`, `SR` puo' trasferire fuori dai primi. Il boundary non vive tra prime e non-prime generico; vive tra primi e pre-bordo aritmetico.
tools/data/reports/agent_20260512_0330.md:103:- **Campo di possibilita'**: possibile = testare il boundary come selezione prime dentro il pre-bordo `6k +/- 1`; non-possibile = usare `SR` da solo come firma prime-specific.
tools/data/reports/agent_20260512_0330.md:111:ssp_value: yes. `tools/exp_prime_sr_persistent_boundary.py` diventa audit riusabile per distinguere persistenza osservabile, specificita' di dominio e collisione col pre-bordo aritmetico.
tools/data/reports/agent_20260512_0330.md:115:- Script: `tools/exp_prime_sr_persistent_boundary.py`
tools/data/reports/agent_20260512_0330.md:116:- Data: `tools/data/prime_sr_persistent_boundary_20260512_0330.json`
tools/data/reports/agent_20260512_0330.md:117:- Seed check: `tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json`
tools/data/reports/falsifier_20260515_1807.json:16:      "claim": "Relazione nuova: il boundary non appartiene al solo irrazionale phi; appartiene alla quota di ordine binario a lungo raggio che il surrogate IAAFT conserva parzialmente.",
tools/data/reports/falsifier_20260515_1807.json:17:      "evidence": "Il report lavora su Hamiltoniane Aubry-Andre/Sturmian, statistiche spettrali e surrogate IAAFT, ma non ancora il risultato classico piu vicino o il limite noto rispetto al quale la relazione sarebbe nuova. Il testo evita universalita GUE/Poisson, ma usa comunque 'Relazione nuova'.",
tools/data/reports/agent_20260509_1538.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE  
tools/data/reports/agent_20260509_1538.md:7:observables_used: [`beta_state`, `coordinate_failure`, `support_tier`, `beta_cardinality`, `beta_span`, `one_sided_count`, `stable_count_coherent`, `stable_count_illusory`, `endpoint_distance`, `denominator_state`, `excluded_mass`, `shuffle_z_score`] - osservabili domain-native di audit, non canonici SR/SR2/L1/L2/triple_var.  
tools/data/reports/agent_20260509_1538.md:8:**observable_contract**: claim=le righe non-esatte della matrice BOUNDARY 15:32 vanno lette row-aligned senza usare label GUE/Poisson; observable=stato beta + forza supporto + telemetria denominatore/null; operator=`exp_boundary_row_aligned_nonexact_audit.py`; generator=matrice `boundary_two_axis_matrix_20260509_1532` + prescan `boundary_denominator_prescan_full_20260509_1500`; denominator=13 righe totali, 11 support-transfer, 7 support-transfer non esatte; non_possible=forzare il conteggio a 6 o trattare beta 0.3 come ascissa comune; not_tested=nuovi domini, nuovi null, nuova griglia beta, fit `V_c`.
tools/data/reports/agent_20260509_1538.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + BOUNDARY 13 righe + tensione "supporto senza coordinata universale".
tools/data/reports/agent_20260509_1538.md:14:- **Piano superiore**: boundary operator su matrice row-aligned. Il bordo non decide con label di dominio; decide con stato beta, support tier e denominatore.
tools/data/reports/agent_20260509_1538.md:15:- **Operatori laterali scelti**: boundary operator, sheaf locale/perimetro, coordinate chart. Entrano per leggere le sezioni locali della beta senza saldarle in una coordinata globale.
tools/data/reports/agent_20260509_1538.md:24:- `not_drift`: non usa label GUE/Poisson come operatore, non ritorna a `V_c`, non rifitta il confine; corregge il denominatore della direttiva quando il deposito mostra 7 righe.
tools/data/reports/agent_20260509_1538.md:27:> Le righe BOUNDARY con supporto ma senza beta 0.3 esatta si distinguono per stato locale della beta e forza del supporto, non per label di dominio.
tools/data/reports/agent_20260509_1538.md:33:- Nuovo strumento: `tools/exp_boundary_row_aligned_nonexact_audit.py`.
tools/data/reports/agent_20260509_1538.md:34:- Input 1: `tools/data/boundary_two_axis_matrix_20260509_1532.json`.
tools/data/reports/agent_20260509_1538.md:35:- Input 2: `tools/data/boundary_denominator_prescan_full_20260509_1500.json`.
tools/data/reports/agent_20260509_1538.md:36:- Output: `tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json`.
tools/data/reports/agent_20260509_1538.md:38:- Label policy: non legge `source_domain_type` o label GUE/Poisson come decision field.
tools/data/reports/agent_20260509_1538.md:97:Il frame BOUNDARY regge come support-transfer su 11/13 righe, ma la parte non-esatta non e' una coda omogenea. Le righe support-transfer senza beta 0.3 esatta sono 7 e si dividono in cinque failure modes:
tools/data/reports/agent_20260509_1538.md:114:- **Invariante di passaggio**: failure mode row-aligned; non label GUE/Poisson e non beta 0.3 globale.
tools/data/reports/agent_20260509_1538.md:118:Il prossimo ciclo non deve ripetere la matrice. Deve attaccare i tre blank `support_without_beta_blank` sottili contro il blank medio `numeri_primi`: stesso stato beta, diversa forza del supporto. La domanda aperta e' se il blank sottile e' effetto del denominatore corto/contaminato oppure una specie autonoma del boundary.
tools/data/reports/agent_20260509_1538.md:121:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/data/seme.json`, `tools/dnd_scenario.py --best`, report `agent_20260509_1532.md`, JSON `boundary_two_axis_matrix_20260509_1532.json`, JSON `boundary_denominator_prescan_full_20260509_1500.json`, script `tools/exp_boundary_row_aligned_nonexact_audit.py`, output `tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json`.
tools/data/reports/agent_20260509_1538.md:132:- Verifica script: `python -m py_compile tools/exp_boundary_row_aligned_nonexact_audit.py`.
tools/data/reports/agent_20260509_1538.md:133:- Run valido: `python tools/exp_boundary_row_aligned_nonexact_audit.py --matrix tools/data/boundary_two_axis_matrix_20260509_1532.json --prescan tools/data/boundary_denominator_prescan_full_20260509_1500.json --out tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json`.
tools/data/reports/agent_20260509_1538.md:138:- Script nuovo: `tools/exp_boundary_row_aligned_nonexact_audit.py`
tools/data/reports/agent_20260509_1538.md:139:- Data: `tools/data/boundary_row_aligned_nonexact_audit_20260509_1538.json`
tools/data/reports/agent_20260514_1612.md:5:**verdict**: CONSTRAINT - il trasduttore `SR` assorbito vs residuo `L1,triple_var` produce un test fisico concreto su spettri GUE/Anderson; nel run sintetico il ritorno fisico e' presente ma resta proxy numerico, non misura sperimentale  
tools/data/reports/agent_20260514_1612.md:8:**observable_contract**: claim=il cedimento selettivo di `SR` puo' essere formulato come test fisico A->B; observable=componenti canoniche attive/assorbite contro null Poisson span-matched; operator=`tools/exp_physical_sr_residue_bounce.py`; generator=GUE hermitiano e Hamiltoniano Anderson 1D tight-binding; denominator=48 repliche per dominio, 95 gap centrali per spettro; non_possible=rimbalzo fisico assente se non si nomina B concreto oppure se `SR` non discrimina GUE da Anderson localizzato; not_tested=dati sperimentali reali, unfolding fine, classi di simmetria GOE/GSE, many-body localization.
tools/data/reports/agent_20260514_1612.md:12:Il risultato non chiede un altro ingrandimento dei primi. Chiede se la componente che cade (`SR`) e quelle che resistono (`L1,triple_var`) nominano una distinzione fisica: repulsione spettrale presente o assorbita dal bordo Poisson.
tools/data/reports/agent_20260514_1612.md:17:- **Dipolo / punto-zero**: caos quantistico / localizzazione. Punto-zero: stesso numero di livelli e stesso span con null Poisson span-matched.
tools/data/reports/agent_20260514_1612.md:19:- **Proto-ipotesi**: `SR` misura la repulsione locale assorbibile quando lo spettro torna Poisson; `L1,triple_var` misurano memoria di sequenza oltre il solo nearest-neighbor ratio. Il deposito prime-minus-mod6 diventa trasduttore, non destinazione.
tools/data/reports/agent_20260514_1612.md:21:- **Proiezione**: GUE come sorgente fisica A; null Poisson span-matched; Anderson 1D con disordine `W=0.5,2,6,12` come ritorno fisico B.
tools/data/reports/agent_20260514_1612.md:31:- `not_drift`: il deposito prime-minus-mod6 non e' destinazione; decide solo quale domanda portare a GUE/Anderson.
tools/data/reports/agent_20260514_1612.md:35:- **Punto fisico sorgente concreto**: spettri energetici di sistemi quantistici caotici modellati da GUE, proxy per billiard o sistemi senza simmetria di inversione temporale.
tools/data/reports/agent_20260514_1612.md:36:- **Attraversamento matematico**: null Poisson span-matched con osservabili canonici `SR,L1,triple_var`; e' l'analogo fisico del contro-bordo che prova ad assorbire la componente nearest-neighbor.
tools/data/reports/agent_20260514_1612.md:37:- **Punto fisico di ritorno concreto**: Hamiltoniano tight-binding Anderson 1D con disordine crescente, interrogabile tramite spacing degli autovalori e transizione verso statistiche Poisson/localizzate.
tools/data/reports/agent_20260514_1612.md:38:- **Relazione nuova o limite**: il run mostra una formulazione fisica del cedimento selettivo: `SR` e' attivo nel GUE e assorbito nel limite Anderson localizzato `W=12`. A `W=6`, `SR` e `L1` sono assorbiti mentre `triple_var` resta attivo: il ritorno fisico separa nearest-neighbor repulsion e memoria di triple locali.
tools/data/reports/agent_20260514_1612.md:39:- **Osservabile/test fisico possibile**: misurare spettri energetici in un sistema Anderson-like, costruire un ensemble di finestre spettrali, confrontare `SR,L1,triple_var` contro null Poisson span-matched con sign-swap row-local.
tools/data/reports/agent_20260514_1612.md:44:> Il cedimento selettivo di `SR` osservato nel deposito prime-minus-mod6 puo' tornare come criterio fisico: `SR` resta attivo in spettri caotici GUE e viene assorbito in spettri Anderson localizzati contro un null Poisson span-matched.
tools/data/reports/agent_20260514_1612.md:49:- Ensemble: GUE hermitiano `N=192`, Anderson 1D `N=192`.
tools/data/reports/agent_20260514_1612.md:52:- Null: livelli Poisson uniformi span-matched con stesso count.
tools/data/reports/agent_20260514_1612.md:58:| domain | samples | focus active | SR real/null/delta | p(SR) | L1 delta | p(L1) | triple delta | p(triple) |
tools/data/reports/agent_20260514_1612.md:60:| GUE chaotic proxy | 48 | SR,L1,triple_var | 0.5936 / 0.3881 / 0.2055 | 0.000244 | -0.3047 | 0.000244 | -2.4262 | 0.000244 |
tools/data/reports/agent_20260514_1612.md:70:1. **Verificato**: nel proxy GUE, `SR` resta attivo contro Poisson span-matched (`delta=0.2055`, `p=0.000244`, `d=4.872`).
tools/data/reports/agent_20260514_1612.md:73:4. **Inferito dal perimetro**: il deposito prime-minus-mod6 produce un osservabile fisico formulabile: non "i primi sono fisica", ma "la componente `SR` boundary-sensitive corrisponde al test di repulsione spettrale contro Poisson".
tools/data/reports/agent_20260514_1612.md:80:Il rimbalzo fisico esiste come test: GUE -> span-matched Poisson -> Anderson 1D. Il risultato non cristallizza una nuova legge fisica. Formalizza un ponte interrogabile: quando lo spettro torna localizzato/Poisson, `SR` viene assorbito; nella zona di crossover, `triple_var` puo' restare come residuo oltre nearest-neighbor.
tools/data/reports/agent_20260514_1612.md:84:- **Due radici**: repulsione spettrale caotica / assorbimento Poisson localizzato.
tools/data/reports/agent_20260514_1612.md:85:- **Singolare**: null Poisson span-matched con stesso count.
tools/data/reports/agent_20260514_1612.md:92:Il prossimo ciclo fisico deve sostituire il proxy sintetico con un denominatore piu vicino al laboratorio: GOE/GUE scelto per simmetria dichiarata, Anderson 3D o many-body localization se si vuole una transizione fisica vera, unfolding controllato e confronto con dati o letteratura. Il deposito prime-minus-mod6 resta utile solo come generatore di osservabili, non come prova del dominio fisico.
tools/data/reports/agent_20260507_0803.md:11:The operator directive asked whether the `BOUNDARY_LAYER_GATE` forged on the
tools/data/reports/agent_20260507_0803.md:12:GUE/Poisson boundary is a transferable operator or only a local metric.
tools/data/reports/agent_20260507_0803.md:19:> valid but empty layer maps, it is a BOUNDARY-local metric.
tools/data/reports/agent_20260507_0803.md:36:This is not a new BOUNDARY experiment. GUE and Poisson do not appear in the
tools/data/reports/agent_20260507_0803.md:87:2. **The BOUNDARY layer coordinate does not transfer unchanged.** In the
tools/data/reports/agent_20260507_0803.md:88:GUE/Poisson run, beta 0.3-0.4 carried both classification ambiguity and
tools/data/reports/agent_20260507_0803.md:92:operator transfers, but the specific BOUNDARY layer shape is local.
tools/data/reports/agent_20260507_0803.md:95:reason as BOUNDARY.** The endpoint-stable set is empty because the illusory
tools/data/reports/agent_20260507_0803.md:116:> GUE/Poisson boundary layer is not transferable: ambiguity appears near beta
tools/data/reports/agent_20260507_0803.md:119:So the last BOUNDARY cycles forged a lens, but one parameter of that lens was
tools/data/reports/agent_20260507_0803.md:120:local to BOUNDARY. The transferable object is not "beta 0.3-0.4"; it is:
tools/data/reports/agent_20260507_0803.md:132:If both layers coincide in a domain, the domain has a BOUNDARY-like transition.
tools/data/reports/agent_20260507_0803.md:134:coordinate belongs to the target domain, not to the operator.
tools/data/reports/agent_20260507_0803.md:144:  from "BOUNDARY beta coordinate transfers." The second is not claimed.
tools/data/reports/next_exec_20260401_0346.json:4:    "decision": "CRYSTALLIZE: TRANS_BOUNDARY_FALSIFICA_F1 — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/next_exec_20260401_0346.json:33:    "discovery": "TRANS_BOUNDARY_FALSIFICA_F1",
tools/data/reports/report_20260305_0342.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260305_0342.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260305_0342.md:26:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260305_0342.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260305_0342.md:28:- percolation_var_0.55: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260305_0342.md:29:- percolation_var_0.65: r=1.127659574468085, spacing=Poisson-like
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1256:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1267:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1278:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1289:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1300:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1311:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1322:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1333:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1344:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1355:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1366:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1377:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1388:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1399:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1410:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1421:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1432:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1443:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1454:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1465:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1476:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1487:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1498:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1509:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1520:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1531:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1542:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1553:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1564:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1575:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1586:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1597:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1608:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1619:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1630:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1641:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1652:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1663:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1674:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1685:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1696:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1707:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1718:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1729:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1740:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1751:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1762:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1773:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1784:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1795:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1806:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1817:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1828:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1839:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1850:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1861:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1872:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1883:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1894:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1905:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1916:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1927:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1938:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1949:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1960:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1971:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1982:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:1993:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2004:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2015:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2026:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2037:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2048:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2059:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2070:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2081:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2092:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2103:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2114:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2125:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2136:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2147:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2158:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2169:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2180:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2191:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2202:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2213:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2224:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2235:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2246:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2257:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2268:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2279:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2290:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2301:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2312:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2323:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2334:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2345:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2356:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2367:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2378:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2389:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2400:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2411:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2422:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2433:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2444:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2455:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2466:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2477:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2488:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2499:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2510:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2521:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2532:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2543:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2554:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2565:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2578:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2591:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2604:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2617:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2630:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2643:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2656:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2669:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2682:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2695:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2708:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2721:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2734:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2747:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2760:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2773:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2786:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2799:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2812:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2825:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2838:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2851:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2864:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2877:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2890:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2903:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2916:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2929:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2942:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2955:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2968:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2981:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:2994:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3007:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3020:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3033:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3046:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3059:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3072:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3085:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3098:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3111:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3124:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3137:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3150:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3163:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3176:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3189:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3202:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3215:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3228:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3241:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3254:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3267:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3280:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3293:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3306:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3319:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3332:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3345:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3358:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3371:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3384:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3397:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3410:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3423:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3436:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3449:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3462:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3475:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3488:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3501:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3514:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3527:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3540:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3553:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3566:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3579:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3592:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3605:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3618:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3631:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3644:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3657:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3670:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3683:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3696:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3709:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3722:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3735:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3748:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3761:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3774:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3787:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3800:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3813:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3826:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3839:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3852:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3865:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3878:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3891:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3904:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3917:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3930:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3943:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3956:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3969:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3982:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:3995:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4008:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4021:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4034:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4047:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4060:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4073:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4086:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4099:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4112:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4125:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4138:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4151:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4164:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4177:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4190:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4203:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4216:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4229:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4242:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4255:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4268:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4281:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4294:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4307:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4320:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4333:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4346:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4359:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4372:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4385:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4398:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4411:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4424:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4437:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4450:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4463:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4476:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4489:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4502:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4515:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4528:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4541:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4554:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4567:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4580:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4593:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4606:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4619:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4632:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4645:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4658:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4671:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4684:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4697:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4710:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4723:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4736:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4749:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4762:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4775:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4788:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4801:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4814:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4827:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4840:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4853:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4866:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4879:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4892:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4905:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4918:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4931:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4944:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4957:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4970:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4983:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:4996:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5009:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5022:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5035:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5048:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5061:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5074:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5087:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5100:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5113:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5126:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5139:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5152:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5165:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5178:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5191:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5204:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5217:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5230:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5243:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5256:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5269:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5282:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5295:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5308:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5321:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5334:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5347:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5360:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5373:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5386:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5399:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5412:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5425:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5438:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5451:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5464:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5477:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5490:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5503:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5516:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5529:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5542:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5555:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5568:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5581:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5594:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5607:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5620:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5633:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5646:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5659:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5672:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5685:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5698:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5711:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5724:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5737:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5750:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5763:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5776:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5789:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5802:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5815:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5828:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5841:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5854:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5867:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5880:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5893:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5906:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5919:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5932:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5945:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5958:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5971:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5984:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:5997:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6010:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6023:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6036:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6049:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6062:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6075:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6088:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6101:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6114:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6127:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6140:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6153:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6166:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6179:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6192:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6205:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6218:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6231:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6244:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6257:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6270:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6283:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6296:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6309:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6322:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6335:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6348:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6361:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6374:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6387:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6400:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6413:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6426:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6439:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6452:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6465:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6478:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6491:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6504:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6517:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6530:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6543:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6556:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6569:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6582:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6595:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6608:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6621:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6634:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6647:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6660:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6673:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6686:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6699:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6712:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6725:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6738:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6751:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6764:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6777:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6790:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6803:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6816:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6829:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6842:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6855:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6868:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6881:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6894:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6907:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6920:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6933:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6946:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6959:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6972:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6985:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:6998:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7011:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7024:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7037:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7050:      "domain": "phi",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7063:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7076:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7089:      "domain": "silver",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7102:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7115:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7128:      "domain": "bronze",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7141:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7154:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7167:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7180:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7193:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7206:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7219:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7232:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_curve_map_20260509_0330.json:7245:      "domain": "balanced_random_phi_density",
tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json:2:  "experiment": "prime_vs_mod6_sr_boundary",
tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json:3:  "question": "Does SR belong to prime selection or to the row-local 6k +/- 1 pre-boundary?",
tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json:38:    "out": "tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json"
tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json:639:  "verdict": "SR_BELONGS_TO_MOD6_PREBOUNDARY",
tools/data/seme_backup_b2_20260508_214525.json:2:  "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_backup_b2_20260508_214525.json:3:  "new_direzione": "Riprogettare il gate `V_c` con null omogenei al boundary operator: phase-shuffle Sturmian, label-preserving surrogate e controllo gap_ratio prima di estendere a nuovi domini GUE/Poisson",
tools/data/selective_layer_decoupling.json:421:  "GUE": {
tools/data/selective_layer_decoupling.json:840:  "Poisson": {
tools/data/reports/agent_20260507_2042.md:62:Applicare lo stesso test a un perimetro non-primi con ordine costruito e marginale identica: Beatty coerente, shuffle Beatty, GUE spacing order, Poisson. Se il segno resta condiviso, il nodo regressivo e l'embedding `x=(g_i,g_{i-1})`; se lo scarto z replica solo nei domini ordinati, det resta utile come osservabile subordinato al denominator gate.
tools/data/reports/agent_20260514_1640.md:1:# Agent Report - Rafforzamento tester fisico GOE/GUE N-curve
tools/data/reports/agent_20260514_1640.md:4:**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / BOUNDARY fisico GOE-GUE-Poisson-Anderson  
tools/data/reports/agent_20260514_1640.md:5:**verdict**: CONSTRAINT / TESTER OPERATIVO RAFFORZATO - `component_state(SR,L1,triple_var)` resta leggibile su un denominatore fisico piu' robusto: distingue GOE e GUE per simmetria su `SR`, conserva la curva in `N=128,192`, e mantiene Anderson 1D `W=6` come bordo finite-size dove `SR` viene assorbito e `triple_var` resta residuo operativo. Non e' una nuova legge fisica.  
tools/data/reports/agent_20260514_1640.md:8:**observable_contract**: claim=il tester L8 16:31 si rafforza solo se resta leggibile fra classi Wigner-Dyson distinte e fra due taglie; observable=`component_state(SR,L1,triple_var)` con `SR` = adjacent gap ratio canonico piu contrasto diretto GUE-GOE; operator=`tools/exp_physical_sr_residue_bounce.py`; generator=GOE reale simmetrico, GUE hermitiano complesso, Anderson 1D `W=6`, null Poisson span-matched; denominator=2 taglie `N={128,192}`, 64 repliche per taglia e dominio, 384 eventi trace, finestra centrale 0.5; non_possible=promuovere il pattern a legge fisica nuova o usare Anderson 1D come transizione universale; not_tested=dati sperimentali, unfolding dedicato, Anderson 3D, many-body localization, limite asintotico.
tools/data/reports/agent_20260514_1640.md:12:Questo ciclo prosegue il tester L8 del report `tools/data/reports/agent_20260514_1631.md`. Non apre una nuova legge fisica e non ritorna a `prime-minus-mod6`. Il vincolo seguito e': rafforzare il tester operativo `component_state(SR,L1,triple_var)` su denominatore fisico piu' robusto distinguendo GOE/GUE, facendo una piccola curva in `N`, mantenendo Anderson 1D `W=6` come bordo finite-size, e confrontando il tester con adjacent gap ratio.
tools/data/reports/agent_20260514_1640.md:16:Il tester non deve dire "fisica nuova". Deve dire se lo stesso vettore resta leggibile quando il denominatore fisico smette di essere una sola classe. La separazione GOE/GUE su `SR` e il collasso di `SR` a `W=6` sono lo stesso bordo letto da due lati: simmetria caotica e assorbimento localizzato.
tools/data/reports/agent_20260514_1640.md:20:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + ponte QxG continuo/discreto + direzione BOUNDARY GUE/Poisson + nodo fisico Wigner-Dyson/Anderson.
tools/data/reports/agent_20260514_1640.md:21:- **Dipolo / punto-zero**: simmetria Wigner-Dyson GOE/GUE / indipendenza Poisson-localizzata. Punto-zero: adjacent gap ratio `SR`, perche' e' insieme osservabile canonico del tester e baseline fisica standard.
tools/data/reports/agent_20260514_1640.md:23:- **Operatori laterali scelti**: gauge/simmetria, spettro di Hamiltoniana, bordo finite-size. Entrano perche' obbligano il tester a passare da una sola classe GUE a classi di simmetria distinte e a un bordo disordinato.
tools/data/reports/agent_20260514_1640.md:27:- **Proiezione**: misuro GOE, GUE e Anderson `W=6` a `N=128,192`; ogni dominio viene confrontato con Poisson span-matched, poi GUE viene confrontato direttamente con GOE.
tools/data/reports/agent_20260514_1640.md:32:- `why`: il ciclo segue la direzione viva perche' rafforza il frame GUE/Poisson-Anderson indicato dal valutatore e rende `component_state(SR,L1,triple_var)` piu' falsificabile.
tools/data/reports/agent_20260514_1640.md:37:> Il tester `component_state(SR,L1,triple_var)` resta operativo quando il denominatore fisico separa GOE e GUE: `SR` legge la classe di simmetria Wigner-Dyson, viene assorbito nel bordo Anderson 1D `W=6`, e `triple_var` resta residuo locale nel bordo finite-size.
tools/data/reports/agent_20260514_1640.md:41:Il tester L8 16:31 distingue una classe GOE da una classe GUE su due taglie senza perdere il bordo Anderson `W=6`?
tools/data/reports/agent_20260514_1640.md:45:- **Punto fisico sorgente**: statistiche Wigner-Dyson/GUE e Poisson usate nel report 16:31 come baseline del rimbalzo fisico.
tools/data/reports/agent_20260514_1640.md:47:- **Punto fisico di ritorno**: classi di simmetria GOE beta=1 reale-simmetrica e GUE beta=2 hermitiana complessa, piu Anderson 1D disordinato `W=6`.
tools/data/reports/agent_20260514_1640.md:48:- **Relazione nuova**: il tester non misura solo chaotic-vs-Poisson; misura anche se la simmetria Wigner-Dyson lascia una differenza leggibile prima del bordo localizzato.
tools/data/reports/agent_20260514_1640.md:50:- **Se fallisce**: `ritorno_fisico_assente` se GOE/GUE non si separano o se Anderson `W=6` non assorbe `SR`; in quel caso il tester resta solo scaffold sintetico.
tools/data/reports/agent_20260514_1640.md:55:- **Wigner-Dyson / GUE level statistics**: classe beta=2, matrici hermitiane complesse, assenza di simmetria di inversione temporale.
tools/data/reports/agent_20260514_1640.md:56:- **Poisson level statistics**: livelli indipendenti, null operativo span-matched.
tools/data/reports/agent_20260514_1640.md:62:- Modifica minima allo script: aggiunti `goe_levels`, parametro `--ns`, trace con `n/symmetry`, riepiloghi per taglia e contrasto diretto GUE-GOE.
tools/data/reports/agent_20260514_1640.md:64:- Perimetro: GOE, GUE, Anderson 1D `W=6`; due taglie; 64 repliche per taglia e dominio.
tools/data/reports/agent_20260514_1640.md:65:- Null: Poisson span-matched con stesso count di gap.
tools/data/reports/agent_20260514_1640.md:73:| domain | samples | focus active | SR real/null/delta | p(SR) | d(SR) | L1 delta | p(L1) | d(L1) | triple delta | p(triple) | d(triple) |
tools/data/reports/agent_20260514_1640.md:76:| GUE beta=2 | 128 | SR,L1,triple_var | 0.6019 / 0.3838 / 0.2181 | 0.000122 | 4.120 | -0.2717 | 0.000122 | -1.867 | -2.5591 | 0.000122 | -3.292 |
tools/data/reports/agent_20260514_1640.md:81:| domain | N | samples | focus active | SR real | SR delta | p(SR) | d(SR) | triple delta | p(triple) | d(triple) |
tools/data/reports/agent_20260514_1640.md:84:| GUE beta=2 | 128 | 64 | SR,L1,triple_var | 0.6005 | 0.2207 | 0.000122 | 3.635 | -2.6750 | 0.000122 | -3.122 |
tools/data/reports/agent_20260514_1640.md:87:| GUE beta=2 | 192 | 64 | SR,L1,triple_var | 0.6034 | 0.2155 | 0.000122 | 4.883 | -2.4432 | 0.000122 | -3.615 |
tools/data/reports/agent_20260514_1640.md:90:### Contrasto diretto GUE-GOE
tools/data/reports/agent_20260514_1640.md:92:| contrast | paired | SR diff GUE-GOE | p(SR) | d(SR) | SR state | triple diff | p(triple) | d(triple) | triple state |
tools/data/reports/agent_20260514_1640.md:99:- **Verificato / strong per tester**: GOE e GUE sono entrambi active contro Poisson span-matched su `SR,L1,triple_var`.
tools/data/reports/agent_20260514_1640.md:100:- **Verificato / class separation**: GUE-GOE si separa su `SR` in entrambe le taglie (`+0.0704` a `N=128`, `+0.0655` a `N=192`, p=0.000122).
tools/data/reports/agent_20260514_1640.md:101:- **Verificato / size readability**: il pattern resta leggibile nelle due taglie: GUE ha `SR` circa 0.6005/0.6034, GOE circa 0.5302/0.5379.
tools/data/reports/agent_20260514_1640.md:102:- **Verificato / operational boundary**: Anderson `W=6` assorbe `SR` in entrambe le taglie (`p=0.930428` a `N=128`, `p=0.824118` a `N=192`) mentre `triple_var` resta active.
tools/data/reports/agent_20260514_1640.md:115:1. **Verificato**: `SR` coincide con adjacent gap ratio e separa GOE/GUE nel verso fisico atteso: GUE > GOE > Poisson.
tools/data/reports/agent_20260514_1640.md:118:4. **Inferito**: il tester 16:31 passa da "GUE contro Poisson" a "simmetria Wigner-Dyson contro bordo Poisson-localizzato".
tools/data/reports/agent_20260514_1640.md:125:Il ciclo rafforza lo strumento, non il claim fisico. `component_state(SR,L1,triple_var)` ora ha un denominatore piu' robusto: distingue GOE e GUE tramite adjacent gap ratio, resta leggibile su due taglie, e mantiene Anderson `W=6` come bordo in cui `SR` viene assorbito prima del residuo `triple_var`.
tools/data/reports/agent_20260514_1640.md:129:- **Due radici**: simmetria Wigner-Dyson GOE/GUE / indipendenza Poisson-localizzata.
tools/data/reports/agent_20260514_1640.md:131:- **Invariante di passaggio**: `SR` separa GOE-GUE ma cade su Anderson `W=6`; `triple_var` conserva residuo locale nel bordo finite-size.
tools/data/reports/agent_20260514_1640.md:136:Il prossimo passo non e' aggiungere dominio per ampiezza. E' rendere il tester leggibile come strumento: interfaccia unica per spettro ordinato, classe attesa opzionale, output `component_state`, contrasto Poisson e, se due classi sono presenti, contrasto diretto. La promozione resta `soluzione/tool`, non `scoperta fisica`.
tools/data/reports/agent_20260514_1640.md:140:ssp_value: yes. Il ciclo produce un tester piu' riusabile: dato uno spettro ordinato o un ensemble, calcola `SR,L1,triple_var`, confronta Poisson span-matched, separa GOE/GUE se presenti, e ritorna `component_state` con trace auditabile.
tools/data/reports/agent_20260507_0330.md:1:# Agent Report — The GUE-Poisson Boundary Is a Denominator Collapse Layer
tools/data/reports/agent_20260507_0330.md:4:**Tension explored**: META + BOUNDARY  
tools/data/reports/agent_20260507_0330.md:15:> If the GUE-Poisson boundary is simulated directly by controlled mixtures,
tools/data/reports/agent_20260507_0330.md:20:Tool created: `tools/exp_boundary_mixture_gate.py`
tools/data/reports/agent_20260507_0330.md:23:- domains: synthetic unfolded GUE spacings, iid Poisson spacings, and mixtures;
tools/data/reports/agent_20260507_0330.md:24:- mixture parameter: `beta = 0.0..1.0`, where beta is the Poisson replacement fraction;
tools/data/reports/agent_20260507_0330.md:25:- main run: 1,536 spacings, 16 replicates, GUE matrix size 180, 11 beta layers, 24 full-shuffle baselines;
tools/data/reports/agent_20260507_0330.md:26:- seed check: 1,024 spacings, 12 replicates, GUE matrix size 160, same 11 beta layers, 20 baselines;
tools/data/reports/agent_20260507_0330.md:28:- classification: standardized distance to pure GUE and pure Poisson centroids using all five canonical observables. A layer is marked ambiguous when at least half the replicates have nearest-centroid margin `< 0.15`.
tools/data/reports/agent_20260507_0330.md:30:The endpoint-gated classifier is intentionally reported. In this perimeter it is empty because the Poisson endpoint has almost no stable original-vs-shuffle denominators. That is not discarded; it is the core META result.
tools/data/reports/agent_20260507_0330.md:39:| beta | stable obs / 5 | coord mean | margin mean | ambiguous fraction | Poisson-label fraction |
tools/data/reports/agent_20260507_0330.md:53:At beta 0.0-0.2, the sequence is classified as GUE-like and retains about
tools/data/reports/agent_20260507_0330.md:54:three stable observables. At beta 0.5-1.0, it is classified as Poisson-like,
tools/data/reports/agent_20260507_0330.md:70:- beta 0.5 and above: Poisson-label fraction `1.000`, ambiguity `0.000`.
tools/data/reports/agent_20260507_0330.md:74:1. **The clean two-class boundary fails under denominator gating.** Pure GUE and pure Poisson are separable in all-observable space, but there are no observables stable at both endpoints under the declared gate. The Poisson pole is a weak-denominator pole: classification can still place it, but retention-normalized structural claims cannot use it as if it had the same denominator support as GUE.
tools/data/reports/agent_20260507_0330.md:76:2. **The operational boundary is a layer, not a line, in this synthetic perimeter.** Both the main run and the seed check isolate beta 0.3-0.4 as the ambiguous layer. In the main run the nearest-centroid margin falls to `0.070-0.083`, while ambiguous fraction rises to `0.812-0.875`. This is the measured form of the "third included" here: not a metaphysical third class, but a beta region where two-class assignment and denominator support are both unstable.
tools/data/reports/agent_20260507_0330.md:78:3. **Denominator collapse precedes full Poisson classification.** Stable-observable count drops from about `3.3` at beta 0.1-0.2 to `2.5` at beta 0.3 and `1.625` at beta 0.4. By beta 0.5 the classifier is fully Poisson-labeled, but only `0.750/5` observables remain stable on average. The loss of denominator support is therefore part of the boundary phenomenon, not an after-the-fact nuisance.
tools/data/reports/agent_20260507_0330.md:80:4. **The previous META constraints are extended, not replaced.** The 19:41 and 19:55 constraints still hold. This run adds that a boundary claim also needs a layer map: endpoint separability alone can hide the fact that one endpoint has no original-vs-shuffle denominator and that the transition region carries the actual instability.
tools/data/reports/agent_20260507_0330.md:83:**CONSTRAINT on META + BOUNDARY**: GUE/Poisson boundary claims must report:
tools/data/reports/agent_20260507_0330.md:89:> In the synthetic mixture perimeter tested here, the GUE-Poisson boundary is an operational layer at beta 0.3-0.4: classification is ambiguous there, and denominator support collapses across the transition. The Poisson endpoint remains classifiable but denominator-weak, so it cannot serve as a symmetric structural pole for gated retention claims.
tools/data/reports/agent_20260507_0330.md:92:What opens now: apply the same layer map to real domains rather than only synthetic mixtures. For primes, the next discriminating question is not "GUE or Poisson?" but:
tools/data/reports/agent_20260507_0330.md:96:If prime windows show such a layer, BOUNDARY becomes a measurable transition surface. If they do not, the synthetic result remains a calibration constraint on how not to over-read endpoint separability.
tools/data/reports/agent_20260507_0330.md:101:- **L3 no silent patching**: the claim is explicitly changed from "8 GUE, 5 Poisson boundary" to a synthetic mixture calibration. This does not assert the same layer for primes or all real domains.
tools/data/reports/agent_20260507_0330.md:103:- **L5 re-discovery**: this is a finite-sample diagnostic of crossover and noisy denominator normalization in classical GUE/Poisson spacings. It is not tagged as a new RMT theorem.
tools/data/reports/agent_20260507_0330.md:106:- Script: `tools/exp_boundary_mixture_gate.py`
tools/data/reports/agent_20260507_0330.md:107:- Main data: `tools/data/boundary_mixture_gate_20260507_0330.json`
tools/data/reports/agent_20260507_0330.md:108:- Seed check: `tools/data/boundary_mixture_gate_20260507_0330_seedcheck.json`
tools/data/reports/cycle_20260306_0342.json:946:            "GUE": 0.29670833202771496,
tools/data/reports/cycle_20260306_0342.json:948:            "Poisson": 0.510008332027715,
tools/data/reports/cycle_20260306_0342.json:957:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:959:            "GUE": 0.1637341019241806,
tools/data/reports/cycle_20260306_0342.json:961:            "Poisson": 0.37703410192418063,
tools/data/reports/cycle_20260306_0342.json:970:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:972:            "GUE": 0.07108013924144507,
tools/data/reports/cycle_20260306_0342.json:974:            "Poisson": 0.2843801392414451,
tools/data/reports/cycle_20260306_0342.json:983:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:985:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260306_0342.json:987:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260306_0342.json:998:            "GUE": 0.033692181448734315,
tools/data/reports/cycle_20260306_0342.json:1000:            "Poisson": 0.17960781855126573,
tools/data/reports/cycle_20260306_0342.json:1011:            "GUE": 0.06412167049004891,
tools/data/reports/cycle_20260306_0342.json:1013:            "Poisson": 0.14917832950995114,
tools/data/reports/cycle_20260306_0342.json:1024:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260306_0342.json:1026:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260306_0342.json:1037:            "GUE": 0.11916312020873215,
tools/data/reports/cycle_20260306_0342.json:1039:            "Poisson": 0.09413687979126789,
tools/data/reports/cycle_20260306_0342.json:1050:            "GUE": 0.14296513348744533,
tools/data/reports/cycle_20260306_0342.json:1052:            "Poisson": 0.07033486651255472,
tools/data/reports/cycle_20260306_0342.json:1061:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1063:            "GUE": 0.2041358611525424,
tools/data/reports/cycle_20260306_0342.json:1065:            "Poisson": 0.009164138847457648,
tools/data/reports/cycle_20260306_0342.json:1074:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1076:            "GUE": 0.2748295876655356,
tools/data/reports/cycle_20260306_0342.json:1078:            "Poisson": 0.06152958766553557,
tools/data/reports/cycle_20260306_0342.json:1087:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1089:            "GUE": 0.3640777020486299,
tools/data/reports/cycle_20260306_0342.json:1091:            "Poisson": 0.15077770204862984,
tools/data/reports/cycle_20260306_0342.json:1100:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1102:            "GUE": 0.43564800784619784,
tools/data/reports/cycle_20260306_0342.json:1104:            "Poisson": 0.22234800784619782,
tools/data/reports/cycle_20260306_0342.json:1113:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:1115:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260306_0342.json:1117:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260306_0342.json:1126:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:1128:            "GUE": 0.015680728701978786,
tools/data/reports/cycle_20260306_0342.json:1130:            "Poisson": 0.19761927129802126,
tools/data/reports/cycle_20260306_0342.json:1139:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:1141:            "GUE": 0.029241086644125502,
tools/data/reports/cycle_20260306_0342.json:1143:            "Poisson": 0.18405891335587454,
tools/data/reports/cycle_20260306_0342.json:1154:            "GUE": 0.04273384302801908,
tools/data/reports/cycle_20260306_0342.json:1156:            "Poisson": 0.17056615697198096,
tools/data/reports/cycle_20260306_0342.json:1167:            "GUE": 0.05567668696247785,
tools/data/reports/cycle_20260306_0342.json:1169:            "Poisson": 0.1576233130375222,
tools/data/reports/cycle_20260306_0342.json:1180:            "GUE": 0.06821895426251079,
tools/data/reports/cycle_20260306_0342.json:1182:            "Poisson": 0.14508104573748926,
tools/data/reports/cycle_20260306_0342.json:1193:            "GUE": 0.08041041520559711,
tools/data/reports/cycle_20260306_0342.json:1195:            "Poisson": 0.13288958479440294,
tools/data/reports/cycle_20260306_0342.json:1206:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260306_0342.json:1208:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260306_0342.json:1219:            "GUE": 0.10444251980628838,
tools/data/reports/cycle_20260306_0342.json:1221:            "Poisson": 0.10885748019371166,
tools/data/reports/cycle_20260306_0342.json:1232:            "GUE": 0.11551666300995106,
tools/data/reports/cycle_20260306_0342.json:1234:            "Poisson": 0.09778333699004899,
tools/data/reports/cycle_20260306_0342.json:1245:            "GUE": 0.12622818756544568,
tools/data/reports/cycle_20260306_0342.json:1247:            "Poisson": 0.08707181243455436,
tools/data/reports/cycle_20260306_0342.json:1258:            "GUE": 0.1363444703271271,
tools/data/reports/cycle_20260306_0342.json:1260:            "Poisson": 0.07695552967287295,
tools/data/reports/cycle_20260306_0342.json:1271:            "GUE": 0.14625965183538286,
tools/data/reports/cycle_20260306_0342.json:1273:            "Poisson": 0.06704034816461718,
tools/data/reports/cycle_20260306_0342.json:1284:            "GUE": 0.15586954772482753,
tools/data/reports/cycle_20260306_0342.json:1286:            "Poisson": 0.05743045227517252,
tools/data/reports/cycle_20260306_0342.json:1295:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1297:            "GUE": 0.16527431088573818,
tools/data/reports/cycle_20260306_0342.json:1299:            "Poisson": 0.04802568911426186,
tools/data/reports/agent_20260508_0011.md:4:**Tension explored**: DUALITA_DIPOLARE_VS_ILLUSORIA (0.9) + BOUNDARY (0.8)
tools/data/reports/agent_20260508_0011.md:12:If the duality contrast (real vs shuffle z-score) weakens with scale for prime gaps, what is the quantitative rate of weakening? And does GUE show the same weakening, or is it scale-independent?
tools/data/reports/agent_20260508_0011.md:16:- **Scope**: 200,000 prime gaps (unfolded by local mean, kernel=100), GUE eigenvalue spacings (beta=2, matrix size ~2400, unfolded), Poisson (exponential i.i.d.)
tools/data/reports/agent_20260508_0011.md:18:- **Null baseline**: Poisson (no structure at any scale). Additional null: if effect size is scale-independent, z ~ N^0.5 exactly (alpha = 0.50)
tools/data/reports/agent_20260508_0011.md:29:| GUE     | -6.27  | -3.42 | -8.16  | -2.41 |   -8.32    |
tools/data/reports/agent_20260508_0011.md:30:| Poisson | +0.72  | +0.39 | -0.13  | -1.12 |   -0.64    |
tools/data/reports/agent_20260508_0011.md:49:| Observable |  Primes (s42) | Primes (s137) |  GUE (s42)  | GUE (s137)  | Poisson (s42) |
tools/data/reports/agent_20260508_0011.md:56:All R-squared > 0.95 for primes and GUE (except Poisson, which has no signal).
tools/data/reports/agent_20260508_0011.md:62:2. **GUE eigenvalue spacings show alpha >= 0.5.** For SR (alpha = 0.54), L1 (alpha = 0.60), triple_var (alpha = 0.63): the structure is scale-independent or strengthening. GUE repulsion is built into the ensemble at all scales. Primes mimic GUE locally but lack this scale invariance.
tools/data/reports/agent_20260508_0011.md:64:3. **The discriminator is alpha, not the observable value.** Primes and GUE have similar z-scores at any given window size. The difference is in how z scales with N. Primes: z ~ N^{0.39}. GUE: z ~ N^{0.54}. At small windows they overlap; at large windows they diverge.
tools/data/reports/agent_20260508_0011.md:66:4. **L2 is borderline.** Alpha ~ 0.49-0.53 for primes, near 0.5. L2 is not discriminating between primes and GUE in this metric. The three robust discriminators are SR, L1, and triple_var.
tools/data/reports/agent_20260508_0011.md:68:5. **Poisson shows no scaling.** Alpha near 0 or incoherent (R-squared < 0.15 for L1 and triple_var). No structure to weaken.
tools/data/reports/agent_20260508_0011.md:71:**CONSTRAINT on DUALITA_DIPOLARE_VS_ILLUSORIA / BOUNDARY**: The boundary between dipolar and illusory duality in prime gaps is not a location but a trajectory. The duality contrast (real-vs-shuffle) weakens as N^{-0.11} for SR and N^{-0.18} for L1, approaching Poisson asymptotically. GUE has alpha >= 0.5 (no weakening). The discriminator between primes and GUE is the scaling exponent alpha, not the observable value at any fixed scale.
tools/data/reports/agent_20260508_0011.md:73:L5 check: The weakening of prime gap correlations with scale is consistent with known number-theoretic expectations (Hardy-Littlewood, Lemke Oliver-Soundararajan). What is measured here is the quantitative rate of weakening (alpha ~ 0.39 for SR) and the comparison with GUE (alpha ~ 0.54), which provides a new quantitative discriminator. Default hypothesis: this may be a re-parameterization of known asymptotic decay rates; the exponent alpha as a universality discriminator needs comparison with RMT literature on finite-size effects.
tools/data/reports/agent_20260508_0011.md:77:- **Due radici** (dipolo primario): duality contrast that strengthens with scale (GUE, alpha > 0.5, deep structure) and duality contrast that weakens with scale (primes, alpha < 0.5, dissolving structure). The two are dual because both show dipolar ordering at small scales — the difference emerges only when you observe the trajectory.
tools/data/reports/agent_20260508_0011.md:80:- **Campo di possibilita**: here it becomes possible to discriminate primes from GUE by their scaling trajectory, not by their local statistics. Here it becomes non-possible to claim that prime gaps have "the same universality class as GUE" without specifying the scale and the observable.
tools/data/reports/agent_20260507_0923.md:84:   protocol fold in the synthetic matrix, not a cross-domain coordinate.
tools/data/reports/falsifier_20260508_0011.json:9:      "claim": "GUE has alpha >= 0.5 (no weakening)",
tools/data/reports/falsifier_20260508_0011.json:10:      "evidence": "GUE L2 seed 137 shows alpha = 0.475 +/- 0.204, point estimate below 0.5. The blanket claim 'GUE alpha >= 0.5' in the verdict has this counterexample. The large error bar (0.204) makes the estimate uncertain, but a point estimate below the stated threshold cannot be rounded away.",
tools/data/reports/falsifier_20260508_0011.json:11:      "suggestion": "Qualify the verdict: 'GUE alpha >= 0.5 for SR, L1, triple_var; L2 is indeterminate (0.475-0.780 across seeds, error bar spans the threshold).' Alternatively, exclude L2 from the GUE claim as it is excluded from the primes claim."
tools/data/reports/falsifier_20260508_0011.json:16:      "claim": "Poisson shows no scaling. Alpha near 0 or incoherent (R-squared < 0.15 for L1 and triple_var).",
tools/data/reports/falsifier_20260508_0011.json:17:      "evidence": "Poisson SR has alpha=0.263 with R2=0.75; Poisson L2 has alpha=0.165 with R2=0.91. These are not 'near 0' and not 'incoherent.' An i.i.d. sequence should produce z ~ N(0,1) at all window sizes, giving alpha=0 exactly. Non-zero alpha with R2=0.91 in the null baseline suggests either an unfolding artifact or a bias in the windowed z-score computation that inflates z at larger N even without structure.",
tools/data/reports/falsifier_20260508_0011.json:18:      "suggestion": "Investigate the Poisson L2 scaling (alpha=0.165, R2=0.91) as a potential methodological artifact. If the null baseline itself shows scaling, the prime and GUE alpha values may carry a systematic offset. Report corrected alpha_prime - alpha_poisson as the clean discriminator."
tools/data/reports/falsifier_20260508_0011.json:23:      "claim": "GUE repulsion is built into the ensemble at all scales. [...] alpha >= 0.5 [...] scale-independent or strengthening.",
tools/data/reports/falsifier_20260508_0011.json:24:      "evidence": "Finite-size scaling of GUE spectral statistics is well-studied in RMT literature (e.g., Mehta, Guhr-Müller-Groeling-Weidenmüller). The fact that z grows faster than sqrt(N) for some observables (L1 alpha=0.60, triple_var=0.63) likely reflects known finite-size convergence to the thermodynamic limit, not a novel 'strengthening.' The report's L5 check acknowledges the need for RMT comparison but does not name the specific known result.",
tools/data/reports/falsifier_20260508_0011.json:25:      "suggestion": "Compare alpha values with known finite-size scaling exponents from RMT (e.g., number variance scaling, rigidity scaling with matrix dimension). If they match, the GUE arm is re-discovery and the novelty claim should rest solely on the primes-vs-GUE alpha gap."
tools/data/reports/falsifier_20260508_0011.json:28:  "summary": "Report is internally coherent on its main claim (primes alpha < 0.5, GUE alpha > 0.5) but two edge cases break the stated perimeter: GUE L2 s137 violates the blanket 'alpha >= 0.5' (L4), and Poisson L2 shows non-trivial scaling (alpha=0.165, R2=0.91) that undermines the null baseline and may indicate a systematic bias in the z-score methodology (L4). Neither is fatal but both require tightening before the finding can be called clean."
tools/data/reports/agent_20260410_0330.md:1:# Agent Report — The 1/k Amplitude Decays: A(p) Predicts Poisson at p* ~ 10^{12.6}
tools/data/reports/agent_20260410_0330.md:15:But POISSON_CONVERGENCE says all observables trend toward Poisson at p* ~ 10^{13-14}.
tools/data/reports/agent_20260410_0330.md:52:2. **Poisson crossover at p* ~ 4 x 10^{12} (log10 p* = 12.6).**
tools/data/reports/agent_20260410_0330.md:80:  Predicts Poisson crossover at p* ~ 10^{12.6}, consistent with independent estimates.
tools/data/reports/falsifier_20260508_1834.json:25:      "suggestion": "Nel prossimo ciclo isolare il label `34`: verificare se e' boundary artifact di `|n|<=34`, leakage del reader, o label valido fuori core; non includerlo implicitamente nel profilo random senza nota."
tools/data/reports/agent_20260501_0931.md:1:# Agent Report — The GUE-Poisson Crossover Has a Phase Transition: Direction Locks, Magnitude Decays, Then Flips
tools/data/reports/agent_20260501_0931.md:5:**Tension explored**: BOUNDARY (0.8) + META (0.5) + DIPOLAR_ORDERING (0.8)
tools/data/reports/agent_20260501_0931.md:9:> "8 domains GUE, 5 Poisson — the boundary is the third included operational" (BOUNDARY).
tools/data/reports/agent_20260501_0931.md:10:> The GUE-Poisson transition: is it a smooth interpolation or does it have structure?
tools/data/reports/agent_20260501_0931.md:14:If we gradually destroy GUE ordering by partially shuffling eigenvalue spacings (fraction alpha of positions shuffled), what happens to the dipolar angle (theta, magnitude) in the (SR, L1) plane? Is the crossover smooth (interpolation) or sharp (phase transition)? And where do primes sit relative to this crossover curve?
tools/data/reports/agent_20260501_0931.md:18:- **Method**: Partial shuffle of GUE bulk spacings at 21 alpha levels (0.00 to 1.00, step 0.05)
tools/data/reports/agent_20260501_0931.md:19:- **GUE source**: 60 matrices of size 300, bulk 60% (central eigenvalues), mean-normalized
tools/data/reports/agent_20260501_0931.md:20:- **Partial shuffle**: At each alpha, select floor(alpha * N) random positions per matrix, permute spacings at those positions only, leave rest in GUE order
tools/data/reports/agent_20260501_0931.md:23:- **Null**: Full shuffle (alpha=1.0) of GUE spacings — destroys ordering, preserves marginal distribution
tools/data/reports/agent_20260501_0931.md:24:- **Prime reference**: 100K+ primes, gaps normalized by local running mean (window=100), split into 60 chunks, same (SR, L1) computation. Own shuffle baseline (not GUE shuffle)
tools/data/reports/agent_20260501_0931.md:28:### GUE Crossover: alpha vs dipolar coordinates
tools/data/reports/agent_20260501_0931.md:52:- **Prime on the curve**: In dipolar (dSR, dL1) space, the closest point on the GUE crossover to the prime vector is at alpha = 0.45 (distance 0.012, z = 1.1 — within noise).
tools/data/reports/agent_20260501_0931.md:53:- **Prime direction offset**: Prime theta = -105.3, GUE stable theta = -96.6. Delta = -8.7 degrees. GUE direction std = 0.27 degrees. The offset is 32 sigma in GUE units. The MAGNITUDE matches but the DIRECTION does not.
tools/data/reports/agent_20260501_0931.md:57:1. **The GUE-Poisson crossover is not smooth — it has a phase transition.** The dipolar magnitude decays linearly with alpha and passes through a near-zero minimum (0.0007) at alpha in [0.65, 0.75]. At this point the dipolar direction flips approximately 180 degrees. Below the transition, the ordering signal points consistently at -97 degrees. Above it, residual noise points at +82 degrees. The transition is a genuine zero-crossing, not a gradual rotation.
tools/data/reports/agent_20260501_0931.md:59:2. **The dipolar direction is an invariant of the ordered regime.** From pure GUE (alpha=0) to 60% shuffled (alpha=0.60), the direction stays locked at -96.6 +/- 0.27 degrees. Destroying 60% of the ordering preserves the CHARACTER of the remaining 40%. Only the MAGNITUDE decreases (linearly, at rate -0.41/alpha). This means the direction encodes WHAT KIND of ordering exists, not HOW MUCH.
tools/data/reports/agent_20260501_0931.md:61:3. **Primes match the crossover magnitude but not the direction.** In dipolar magnitude, primes (mag=0.068) correspond to alpha ~ 0.45 on the GUE curve (z=1.1 from curve). But the prime direction (-105.3 degrees) is 8.7 degrees off the GUE direction (-96.6 degrees), a 32-sigma offset. The prime ordering has comparable STRENGTH to 45%-shuffled GUE, but a different CHARACTER. The additional -8.7 degrees means primes have relatively more gap-similarity depression (SR effect) per unit of anticorrelation (L1 effect) than GUE — consistent with dL1/dSR = 2.3 for primes vs 8.4+ for GUE (previous experiments).
tools/data/reports/agent_20260501_0931.md:63:4. **The boundary IS a thing (A9 operational).** The crossover is not a continuous interpolation between two regimes. There is a discrete transition point where the ordering signal vanishes. This point (alpha ~ 0.70) is the boundary — the third included between ordered and disordered. Below it, direction is locked. Above it, no coherent direction exists (post-transition magnitudes 0.02-0.03 are noise from finite-sample effects in the shuffle baseline).
tools/data/reports/agent_20260501_0931.md:67:**CONFIRMED structure on BOUNDARY**: The GUE-Poisson transition in the dipolar plane has a phase transition (direction flip at magnitude zero-crossing, alpha in [0.65, 0.75]). The boundary is a discrete structural feature, not an interpolation.
tools/data/reports/agent_20260501_0931.md:69:**CONSTRAINT on DIPOLAR_ORDERING**: Prime magnitude matches the GUE crossover at alpha ~ 0.45 (z=1.1), but the direction is 8.7 degrees off (32 sigma). Primes are not "partially shuffled GUE" — they share the quantity of ordering but differ in quality. Perimeter: this comparison uses partial-shuffle as the crossover mechanism. Other mechanisms (e.g., Rosenzweig-Porter, Brody) might yield different crossover topologies.
tools/data/reports/agent_20260501_0931.md:71:**L5 note (re-discovery check)**: The GUE-Poisson transition is well-studied (Rosenzweig-Porter model, Brody distribution, Anderson localization). The specific observation that the DIPOLAR DIRECTION is an invariant of the ordered regime while the magnitude decays linearly appears novel in this framework. Default hypothesis: direction invariance likely follows from the linearity of SR and L1 as functions of ordering fraction. The phase transition at the zero-crossing is structural — it marks where the ordering signal changes sign, not just magnitude.
tools/data/reports/agent_20260501_0931.md:77:- **Invariante di passaggio**: the direction (-96.6 degrees). It survives from pure GUE through 60% destruction. The character of ordering persists even when most of the ordering is gone. What crosses the vertex is the kind, not the amount.
tools/data/reports/agent_20260501_0931.md:78:- **Campo di possibilita**: Possible — classify ordering regimes by direction (what kind) independently from magnitude (how much). Determine phase transition points for arbitrary sequences. Not possible — interpolate smoothly between GUE and Poisson in dipolar coordinates (the transition is discrete).
tools/data/reports/agent_20260507_2310.md:6:**observables_used**: blank_edge_is_GQ_count, any_deposit_on_blank_count, full_scale_law_count, shell_face_count - osservabili domain-native del denominatore blank-shell; nessun osservabile canonico SR/SR2/L1/L2/triple_var usato
tools/data/reports/agent_20260507_2310.md:18:- Metrica: quattro osservabili domain-native del denominatore: lato blank fissato su QG, qualunque deposito sul guscio blank, legge completa del guscio, numero di facce del guscio.
tools/data/reports/agent_20260429_1041.md:43:| Brody beta | -0.030 | 0.78 | Decays toward Poisson |
tools/data/reports/agent_20260429_1041.md:120:**NEW (three-layer decomposition) + CONSTRAINT on META + BOUNDARY**
tools/data/reports/agent_20260429_1041.md:123:- **BOUNDARY constrained**: the GUE/Poisson boundary (Brody flow) only describes layers 1-2. Layer 3 (algebraic) is invisible to Brody beta. Any complete model of the boundary must include the algebraic floor.
tools/data/reports/agent_20260429_1041.md:130:- **Campo di possibilità**: diventa possibile modellare il confine GUE/Poisson con un pavimento algebrico che non decade — il Brody beta raggiunge 0 a p ~ 10^9 ma la struttura mod-3 resta. Diventa non-possibile trattare "strutturale" come una singola categoria — ci sono strutture che decadono e strutture che non decadono, e il confine tra i due è il contenuto.
tools/data/reports/falsifier_20260505_0330.json:10:      "evidence": "Le matrici PCA riportate non danno uno zero esatto delle componenti non-PC1: primes PC1=0.989 quindi residuo=0.011, effective rank=1.069; GUE PC1=0.997 quindi residuo=0.003, effective rank=1.022. Il dato supporta ridondanza forte, non proibizione dura di autonomia residua.",
tools/data/reports/falsifier_20260505_0330.json:30:      "claim": "il contributo e' il vincolo operativo sul perimetro D-ND Markov/boundary",
tools/data/reports/next_exec_20260329_0343.json:4:    "decision": "CRYSTALLIZE: TRANS_BOUNDARY_FALSIFICA_F4 — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/next_exec_20260329_0343.json:33:    "discovery": "TRANS_BOUNDARY_FALSIFICA_F4",
tools/data/reports/agent_20260515_1826.md:4:**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / BOUNDARY  
tools/data/reports/agent_20260515_1826.md:15:- **Operatori laterali scelti**: rappresentazione, autovalore, boundary operator.
tools/data/reports/agent_20260515_1826.md:32:Il boundary a V=2 legge una specificita phi nascosta dai box comuni, oppure legge una classe piu larga di parole Sturmian binarie?
tools/data/reports/agent_20260515_1826.md:52:- Contratto osservabile-operatore: il ciclo testa denominator alignment; non testa `gap_ratio`, `V_c`, PSD surrogate quality, limite asintotico o universalita GUE/Poisson.
tools/data/reports/agent_20260515_1826.md:84:La formulazione valida e': a V=2 il boundary dei generatori binari resta un corridoio Sturmian. L'allineamento ai denominatori propri rimuove il dubbio piu vicino del ciclo 18:16, ma non autorizza un claim phi-specific. Phi resta un rappresentante stabile della classe, non il generatore unico del confine.
tools/data/reports/agent_20260515_1826.md:91:- **Campo di possibilita**: possibile = progettare test fisici denominator-aligned su famiglie Sturmian; non-possibile = promuovere phi come boundary autonomo nel perimetro V=2, N<=500.
tools/data/reports/cycle_20260305_0844.json:32:            "GUE": 0.29670833202771496,
tools/data/reports/cycle_20260305_0844.json:34:            "Poisson": 0.510008332027715,
tools/data/reports/cycle_20260305_0844.json:43:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:45:            "GUE": 0.1637341019241806,
tools/data/reports/cycle_20260305_0844.json:47:            "Poisson": 0.37703410192418063,
tools/data/reports/cycle_20260305_0844.json:56:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:58:            "GUE": 0.07108013924144507,
tools/data/reports/cycle_20260305_0844.json:60:            "Poisson": 0.2843801392414451,
tools/data/reports/cycle_20260305_0844.json:69:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:71:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260305_0844.json:73:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260305_0844.json:84:            "GUE": 0.033692181448734315,
tools/data/reports/cycle_20260305_0844.json:86:            "Poisson": 0.17960781855126573,
tools/data/reports/cycle_20260305_0844.json:97:            "GUE": 0.06412167049004891,
tools/data/reports/cycle_20260305_0844.json:99:            "Poisson": 0.14917832950995114,
tools/data/reports/cycle_20260305_0844.json:110:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260305_0844.json:112:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260305_0844.json:123:            "GUE": 0.11916312020873215,
tools/data/reports/cycle_20260305_0844.json:125:            "Poisson": 0.09413687979126789,
tools/data/reports/cycle_20260305_0844.json:136:            "GUE": 0.14296513348744533,
tools/data/reports/cycle_20260305_0844.json:138:            "Poisson": 0.07033486651255472,
tools/data/reports/cycle_20260305_0844.json:147:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:149:            "GUE": 0.2041358611525424,
tools/data/reports/cycle_20260305_0844.json:151:            "Poisson": 0.009164138847457648,
tools/data/reports/cycle_20260305_0844.json:160:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:162:            "GUE": 0.2748295876655356,
tools/data/reports/cycle_20260305_0844.json:164:            "Poisson": 0.06152958766553557,
tools/data/reports/cycle_20260305_0844.json:173:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:175:            "GUE": 0.3640777020486299,
tools/data/reports/cycle_20260305_0844.json:177:            "Poisson": 0.15077770204862984,
tools/data/reports/cycle_20260305_0844.json:186:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:188:            "GUE": 0.43564800784619784,
tools/data/reports/cycle_20260305_0844.json:190:            "Poisson": 0.22234800784619782,
tools/data/reports/cycle_20260305_0844.json:199:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:201:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260305_0844.json:203:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260305_0844.json:212:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:214:            "GUE": 0.015680728701978786,
tools/data/reports/cycle_20260305_0844.json:216:            "Poisson": 0.19761927129802126,
tools/data/reports/cycle_20260305_0844.json:225:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:227:            "GUE": 0.029241086644125502,
tools/data/reports/cycle_20260305_0844.json:229:            "Poisson": 0.18405891335587454,
tools/data/reports/cycle_20260305_0844.json:240:            "GUE": 0.04273384302801908,
tools/data/reports/cycle_20260305_0844.json:242:            "Poisson": 0.17056615697198096,
tools/data/reports/cycle_20260305_0844.json:253:            "GUE": 0.05567668696247785,
tools/data/reports/cycle_20260305_0844.json:255:            "Poisson": 0.1576233130375222,
tools/data/reports/cycle_20260305_0844.json:266:            "GUE": 0.06821895426251079,
tools/data/reports/cycle_20260305_0844.json:268:            "Poisson": 0.14508104573748926,
tools/data/reports/cycle_20260305_0844.json:279:            "GUE": 0.08041041520559711,
tools/data/reports/cycle_20260305_0844.json:281:            "Poisson": 0.13288958479440294,
tools/data/reports/cycle_20260305_0844.json:292:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260305_0844.json:294:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260305_0844.json:305:            "GUE": 0.10444251980628838,
tools/data/reports/cycle_20260305_0844.json:307:            "Poisson": 0.10885748019371166,
tools/data/reports/cycle_20260305_0844.json:318:            "GUE": 0.11551666300995106,
tools/data/reports/cycle_20260305_0844.json:320:            "Poisson": 0.09778333699004899,
tools/data/reports/cycle_20260305_0844.json:331:            "GUE": 0.12622818756544568,
tools/data/reports/cycle_20260305_0844.json:333:            "Poisson": 0.08707181243455436,
tools/data/reports/cycle_20260305_0844.json:344:            "GUE": 0.1363444703271271,
tools/data/reports/cycle_20260305_0844.json:346:            "Poisson": 0.07695552967287295,
tools/data/reports/cycle_20260305_0844.json:357:            "GUE": 0.14625965183538286,
tools/data/reports/cycle_20260305_0844.json:359:            "Poisson": 0.06704034816461718,
tools/data/reports/cycle_20260305_0844.json:370:            "GUE": 0.15586954772482753,
tools/data/reports/cycle_20260305_0844.json:372:            "Poisson": 0.05743045227517252,
tools/data/reports/cycle_20260305_0844.json:381:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:383:            "GUE": 0.16527431088573818,
tools/data/reports/cycle_20260305_0844.json:385:            "Poisson": 0.04802568911426186,
tools/data/reports/cycle_20260305_0844.json:405:            "GUE": 0.29670833202771496,
tools/data/reports/cycle_20260305_0844.json:407:            "Poisson": 0.510008332027715,
tools/data/reports/cycle_20260305_0844.json:416:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:418:            "GUE": 0.1637341019241806,
tools/data/reports/cycle_20260305_0844.json:420:            "Poisson": 0.37703410192418063,
tools/data/reports/cycle_20260305_0844.json:429:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:431:            "GUE": 0.07108013924144507,
tools/data/reports/cycle_20260305_0844.json:433:            "Poisson": 0.2843801392414451,
tools/data/reports/cycle_20260305_0844.json:442:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:444:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260305_0844.json:446:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260305_0844.json:457:            "GUE": 0.033692181448734315,
tools/data/reports/cycle_20260305_0844.json:459:            "Poisson": 0.17960781855126573,
tools/data/reports/cycle_20260305_0844.json:470:            "GUE": 0.06412167049004891,
tools/data/reports/cycle_20260305_0844.json:472:            "Poisson": 0.14917832950995114,
tools/data/reports/cycle_20260305_0844.json:483:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260305_0844.json:485:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260305_0844.json:496:            "GUE": 0.11916312020873215,
tools/data/reports/cycle_20260305_0844.json:498:            "Poisson": 0.09413687979126789,
tools/data/reports/cycle_20260305_0844.json:509:            "GUE": 0.14296513348744533,
tools/data/reports/cycle_20260305_0844.json:511:            "Poisson": 0.07033486651255472,
tools/data/reports/cycle_20260305_0844.json:520:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:522:            "GUE": 0.2041358611525424,
tools/data/reports/cycle_20260305_0844.json:524:            "Poisson": 0.009164138847457648,
tools/data/reports/cycle_20260305_0844.json:533:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:535:            "GUE": 0.2748295876655356,
tools/data/reports/cycle_20260305_0844.json:537:            "Poisson": 0.06152958766553557,
tools/data/reports/cycle_20260305_0844.json:546:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:548:            "GUE": 0.3640777020486299,
tools/data/reports/cycle_20260305_0844.json:550:            "Poisson": 0.15077770204862984,
tools/data/reports/cycle_20260305_0844.json:559:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:561:            "GUE": 0.43564800784619784,
tools/data/reports/cycle_20260305_0844.json:563:            "Poisson": 0.22234800784619782,
tools/data/reports/cycle_20260305_0844.json:572:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:574:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260305_0844.json:576:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260305_0844.json:585:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:587:            "GUE": 0.015680728701978786,
tools/data/reports/cycle_20260305_0844.json:589:            "Poisson": 0.19761927129802126,
tools/data/reports/cycle_20260305_0844.json:598:          "class": "GUE",
tools/data/reports/cycle_20260305_0844.json:600:            "GUE": 0.029241086644125502,
tools/data/reports/cycle_20260305_0844.json:602:            "Poisson": 0.18405891335587454,
tools/data/reports/cycle_20260305_0844.json:613:            "GUE": 0.04273384302801908,
tools/data/reports/cycle_20260305_0844.json:615:            "Poisson": 0.17056615697198096,
tools/data/reports/cycle_20260305_0844.json:626:            "GUE": 0.05567668696247785,
tools/data/reports/cycle_20260305_0844.json:628:            "Poisson": 0.1576233130375222,
tools/data/reports/cycle_20260305_0844.json:639:            "GUE": 0.06821895426251079,
tools/data/reports/cycle_20260305_0844.json:641:            "Poisson": 0.14508104573748926,
tools/data/reports/cycle_20260305_0844.json:652:            "GUE": 0.08041041520559711,
tools/data/reports/cycle_20260305_0844.json:654:            "Poisson": 0.13288958479440294,
tools/data/reports/cycle_20260305_0844.json:665:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260305_0844.json:667:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260305_0844.json:678:            "GUE": 0.10444251980628838,
tools/data/reports/cycle_20260305_0844.json:680:            "Poisson": 0.10885748019371166,
tools/data/reports/cycle_20260305_0844.json:691:            "GUE": 0.11551666300995106,
tools/data/reports/cycle_20260305_0844.json:693:            "Poisson": 0.09778333699004899,
tools/data/reports/cycle_20260305_0844.json:704:            "GUE": 0.12622818756544568,
tools/data/reports/cycle_20260305_0844.json:706:            "Poisson": 0.08707181243455436,
tools/data/reports/cycle_20260305_0844.json:717:            "GUE": 0.1363444703271271,
tools/data/reports/cycle_20260305_0844.json:719:            "Poisson": 0.07695552967287295,
tools/data/reports/cycle_20260305_0844.json:730:            "GUE": 0.14625965183538286,
tools/data/reports/cycle_20260305_0844.json:732:            "Poisson": 0.06704034816461718,
tools/data/reports/cycle_20260305_0844.json:743:            "GUE": 0.15586954772482753,
tools/data/reports/cycle_20260305_0844.json:745:            "Poisson": 0.05743045227517252,
tools/data/reports/cycle_20260305_0844.json:754:          "class": "Poisson",
tools/data/reports/cycle_20260305_0844.json:756:            "GUE": 0.16527431088573818,
tools/data/reports/cycle_20260305_0844.json:758:            "Poisson": 0.04802568911426186,
tools/data/reports/falsifier_20260508_1909.json:28:  "summary": "Il report e' coerente nel falsificare il boundary esatto, ma L1/L4 si rompono dove \"nullo/cade\" viene usato per il core alto intero mentre i dati mostrano sopravvivenza parziale per-label."
tools/data/reports/agent_20260424_0330.md:1:# Agent Report — Two Kinds of GUE: Distribution-Level vs Ordering-Level Classification
tools/data/reports/agent_20260424_0330.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8)
tools/data/reports/agent_20260424_0330.md:8:> The GUE/Poisson classification of 13 domains is treated as a structural finding. But is it a property of sequential correlations (genuine) or of the gap distribution shape alone (tautological)?
tools/data/reports/agent_20260424_0330.md:11:If I shuffle the gap sequence of each domain (destroying ordering, preserving distribution), does the GUE/Poisson classification survive?
tools/data/reports/agent_20260424_0330.md:17:- **Scope**: 10 domains (primes, GUE matrices, Poisson, logistic, Fibonacci spectrum, Ising 2D, percolation, Brownian, coupled oscillators, cellular automata)
tools/data/reports/agent_20260424_0330.md:18:- **Reference**: R_GUE = 0.5307, R_Poisson = 0.3863
tools/data/reports/agent_20260424_0330.md:24:| primes | 100K | 0.4622 | 0.4813 | -26.6 | GUE | GUE | STRUCTURAL |
tools/data/reports/agent_20260424_0330.md:25:| gue | 5K | 0.5995 | 0.6351 | -14.7 | GUE | GUE | STRUCTURAL |
tools/data/reports/agent_20260424_0330.md:26:| fibonacci | 609 | 0.4782 | 0.4073 | +8.0 | GUE | **Poisson** | STRUCTURAL + FLIP |
tools/data/reports/agent_20260424_0330.md:27:| coupled_osc | 427 | 0.8775 | 0.4146 | +43.5 | GUE | **Poisson** | STRUCTURAL + FLIP |
tools/data/reports/agent_20260424_0330.md:28:| percolation | 510 | 0.6551 | 0.4508 | +16.1 | GUE | **Poisson** | STRUCTURAL + FLIP |
tools/data/reports/agent_20260424_0330.md:29:| logistic | 100K | 0.3887 | 0.3423 | +61.6 | Poisson | Poisson | STRUCTURAL |
tools/data/reports/agent_20260424_0330.md:30:| poisson | 100K | 0.3847 | 0.3856 | -1.1 | Poisson | Poisson | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:31:| brownian | 650 | 0.3148 | 0.3324 | -1.6 | Poisson | Poisson | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:32:| ising_2d | 95 | 0.9858 | 0.9859 | -0.1 | GUE | GUE | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:33:| cell_auto | 105 | 0.8446 | 0.8455 | -0.1 | GUE | GUE | TAUTOLOGICAL |
tools/data/reports/agent_20260424_0330.md:39:1. **Two kinds of GUE.** The GUE-classified domains split into two fundamentally different categories:
tools/data/reports/agent_20260424_0330.md:40:   - **Distribution-GUE** (primes, GUE matrices): the gap distribution itself is GUE-like. Shuffling preserves the classification. Sequential ordering adds fine structure (shifts r downward by 0.02-0.04) but doesn't create the classification.
tools/data/reports/agent_20260424_0330.md:41:   - **Ordering-GUE** (fibonacci, coupled oscillators, percolation): the gap distribution is Poisson. The GUE classification exists ONLY because of sequential ordering. Destroy the order and they collapse to Poisson. r-shifts are massive: +0.07 to +0.46.
tools/data/reports/agent_20260424_0330.md:43:2. **Primes are distribution-GUE.** Shuffled prime gaps still give r=0.4813 (GUE side). The ordering pushes r DOWN by 0.019 (z=-26.6), adding extra gap repulsion beyond what the distribution predicts. This is the opposite sign from ordering-GUE domains (where ordering pushes r UP).
tools/data/reports/agent_20260424_0330.md:45:3. **The sign of delta_r is a discriminant.** Distribution-GUE domains have delta_r < 0 (ordering increases repulsion). Ordering-GUE domains have delta_r > 0 (ordering creates attraction/clustering that looks like level repulsion in the r-statistic). The sign tells you which mechanism drives the classification.
tools/data/reports/agent_20260424_0330.md:47:4. **3/8 GUE domains are ordering-GUE.** The BOUNDARY claim "8 GUE, 5 Poisson" conflates two distinct mechanisms. The refined picture: 2 distribution-GUE (primes, GUE), 3 ordering-GUE (fibonacci, coupled_osc, percolation), 2 small-N ambiguous (ising, cell_auto), 3 Poisson (poisson, brownian, logistic). The logistic map is Poisson at distribution level but has massive ordering structure (z=+61.6) that doesn't flip the class.
tools/data/reports/agent_20260424_0330.md:49:5. **META constraint confirmed.** A binary GUE/Poisson test that doesn't include a shuffle control conflates the two mechanisms. Testing "is r closer to 0.53 or 0.39?" is necessary but insufficient — it doesn't distinguish whether the ordering or the distribution is the source.
tools/data/reports/agent_20260424_0330.md:52:**NEW + CONSTRAINT on BOUNDARY + META**
tools/data/reports/agent_20260424_0330.md:54:The BOUNDARY claim must be refined: the 8 GUE domains are not homogeneous. Two distinct mechanisms generate GUE statistics. The boundary between GUE and Poisson has two layers: distribution-level and ordering-level. The sign of delta_r = r_original - r_shuffled discriminates which layer operates.
tools/data/reports/agent_20260424_0330.md:58:- **Due radici** (dipolo primario): Distribution-GUE (il repulsore intrinseco, det=-1 nella forma dei gap) / Ordering-GUE (il repulsore emergente, det=-1 nella sequenza dei gap). Invertite: il primo nasce dalla distribuzione e l'ordine lo affina; il secondo nasce dall'ordine e senza esso collassa.
tools/data/reports/agent_20260424_0330.md:60:- **Invariante di passaggio**: il segno di delta_r. Sopravvive al passaggio del vertice: delta_r < 0 = repulsione intrinseca (primes, GUE), delta_r > 0 = repulsione emergente (fibonacci, percolation, coupled_osc). Il segno e stabile, non dipende dalla scala.
tools/data/reports/agent_20260424_0330.md:61:- **Campo di possibilita**: qui diventa possibile discriminare PERCHE un dominio e GUE (distribuzione vs ordine) — non solo CHE e GUE. Qui diventa non-possibile trattare tutti i domini GUE come omogenei: i test che non separano i due meccanismi (shuffle) sono incompleti.
tools/data/reports/agent_20260424_0330.md:64:La decomposizione two-channel (magnitude/residue) dei run precedenti si sovrappone a questa: il canale magnitudine corrisponde alla distribuzione (chi sei senza ordine), il canale residuo corrisponde all'ordine (cosa l'ordine aggiunge). I 3 domini che flippano sono quelli dove il canale residuo E' il segnale. Per i primi, il canale magnitudine domina ma il residuo aggiunge repulsione (delta_r < 0, z=-26.6). Prossima domanda: i domini ordering-GUE (fibonacci, percolation) hanno la stessa struttura Markov-3 trovata nei primi, o il loro meccanismo di ordine e diverso?
tools/data/reports/agent_20260424_0330.md:67:- Script: `tools/exp_boundary_shuffle_audit.py`
tools/data/reports/agent_20260424_0330.md:68:- Data: `tools/data/boundary_shuffle_audit.json`
tools/data/reports/next_exec_20260405_0729.json:10:        "action": "CRYSTALLIZE: TRANS_BOUNDARY_FALSIFICA_F6 — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/next_exec_20260405_0729.json:22:        "action": "EXPLORE: BOUNDARY — 8 domini GUE, 5 Poisson — il confine è il terzo incluso oper",
tools/data/reports/agent_20260515_1758.md:4:**Tension explored**: BOUNDARY / TENS_SCALE_TRASCENDENZA_LIMITE  
tools/data/reports/agent_20260515_1758.md:5:**verdict**: CONSTRAINT - nel potenziale Aubry-Andre coseno `phi` non chiude un boundary privilegiato; la finestra binaria 17:45 dipende dalla grammatica Sturmian, non dal solo irrazionale phi.  
tools/data/reports/agent_20260515_1758.md:8:**observable_contract**: claim=`phi` resta terzo incluso fisico anche quando il potenziale binario viene sostituito dal coseno Aubry-Andre canonico; observable=`spacing_r` + `mean_ipr` con controllo di distinzione da silver/bronze; operator=`tools/exp_aubry_cosine_boundary_counter_gate.py`; generator=Hamiltoniana tight-binding 1D con potenziale coseno per beta phi/silver/bronze, periodico beta=1/2 e random onsite uniforme; denominator=N={89,144,233} x phase={0,0.25,0.5,0.75} x V=0.50..3.00 step 0.25, random_trials=6; non_possible=promuovere phi come boundary fisico se non si separa dai controlli irrazionali con spacing e localizzazione insieme; not_tested=limite asintotico, disordine correlato sperimentale, classi GUE/Poisson universali dirette.
tools/data/reports/agent_20260515_1758.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + modello Aubry-Andre come ponte fisico tra quasi-periodicita e localizzazione + tensione viva `BOUNDARY`.
tools/data/reports/agent_20260515_1758.md:17:- **Proto-ipotesi**: se `phi` e' boundary fisico e non solo effetto della codifica binaria, nel coseno Aubry-Andre deve restare insieme tra periodico e random e deve separarsi da silver/bronze su spacing e localizzazione.
tools/data/reports/agent_20260515_1758.md:23:- `why`: segue la direzione viva "8 domini GUE, 5 Poisson - il confine e' il terzo incluso operativo" verificando se il confine fisico aperto nel ritorno Aubry/Fibonacci sopravvive a un contro-perimetro canonicale.
tools/data/reports/agent_20260515_1758.md:24:- `not_drift`: non riapre prime/mod6, non usa selector legacy, non rifitta `V_c`; attacca il nodo regressivo lasciato dal ciclo 17:45: forma binaria del potenziale vs boundary fisico.
tools/data/reports/agent_20260515_1758.md:36:- **Punto fisico sorgente**: transizione spettrale/localizzazione in reticoli quasi-periodici, usata come ritorno fisico del boundary GUE/Poisson.
tools/data/reports/agent_20260515_1758.md:47:- `python -m py_compile tools/exp_aubry_cosine_boundary_counter_gate.py` completato.
tools/data/reports/agent_20260515_1758.md:48:- Run: `python tools/exp_aubry_cosine_boundary_counter_gate.py --out tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json`.
tools/data/reports/agent_20260515_1758.md:51:- Gate: `phi_joint_boundary = spacing_r_between and mean_ipr_between and separated_from_random and phi_distinct_from_irrational_controls`.
tools/data/reports/agent_20260515_1758.md:52:- La misura serve la combo perche' rende non-possibile attribuire il boundary a phi se silver/bronze seguono la stessa classe fisica.
tools/data/reports/agent_20260515_1758.md:72:1. **Verificato**: `phi_joint_boundary_v=[]`. Nessun valore di V chiude insieme intermedieta, separazione dal random e distinzione dai controlli irrazionali.
tools/data/reports/agent_20260515_1758.md:73:2. **Verificato**: da V=0.75 a V=1.75 `phi` e' tra periodico e random sia in `spacing_r` sia in `mean_ipr`, ma resta quasi coincidente con silver/bronze; il boundary e' classe quasi-periodica, non privilegio phi.
tools/data/reports/agent_20260515_1758.md:75:4. **Verificato**: a V=2.25 e V=2.50 `phi` si distingue dai controlli, ma non e' piu' boundary congiunto: `mean_ipr_between=false` e a V=2.25 cade anche la separazione dal random.
tools/data/reports/agent_20260515_1758.md:82:Il contro-perimetro coseno falsifica la promozione `phi` come terzo incluso fisico autonomo. Nel perimetro misurato il boundary congiunto non sopravvive quando la grammatica binaria viene rimossa. La formulazione valida diventa: `phi` e' candidato boundary nel potenziale binario Sturmian 17:45; nel coseno Aubry-Andre il contenuto si sposta alla classe quasi-periodica e alla transizione di localizzazione, non a phi come generatore privilegiato.
tools/data/reports/agent_20260515_1758.md:88:- **Invariante di passaggio**: ogni ritorno fisico del boundary deve dichiarare forma del potenziale, controlli irrazionali e gate joint spacing/localizzazione.
tools/data/reports/agent_20260515_1758.md:89:- **Campo di possibilita**: possibile = separare boundary di grammatica da boundary di classe fisica; non-possibile = promuovere `phi` come ritorno fisico se silver/bronze condividono la stessa risposta.
tools/data/reports/agent_20260515_1758.md:93:Il prossimo ciclo non deve allargare `phi` nel coseno. Deve isolare il residuo binario: stessa Hamiltoniana, stesso denominatore, ma ablazione della grammatica Sturmian tramite surrogate che preservano densita, autocorrelazione corta e spettro del potenziale. Se la finestra V=0.50..1.25 sopravvive solo alla grammatica completa, il finding e' `boundary-as-grammar`; se sopravvive a surrogate piu deboli, il finding diventa classe di correlazione del potenziale.
tools/data/reports/agent_20260515_1758.md:97:ssp_value: yes. Lo script e' un counter-gate riusabile per impedire che demo o visualizzazioni del boundary promuovano `phi` senza controlli irrazionali nel modello fisico scelto.
tools/data/reports/agent_20260515_1758.md:108:- `tools/exp_aubry_cosine_boundary_counter_gate.py`
tools/data/reports/agent_20260515_1758.md:109:- `tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json`
tools/data/reports/report_20260403_0330.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260403_0330.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=1.0000 (GUE standard=0.60)
tools/data/reports/report_20260403_0330.md:25:- percolation_var_0.55: r=0.7543859649122806, spacing=Poisson-like
tools/data/reports/report_20260403_0330.md:26:- numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like
tools/data/reports/report_20260403_0330.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260403_0330.md:28:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/agent_20260417_0803.md:101:2. **The crossover lag 6 is the dipolar-illusory boundary.** At this lag, the PNT density drift (+0.008/lag) overtakes the structural anti-correlation (-0.007/lag). Below lag 6: dipolar duality dominates (det=-1, genuine anti-correlation). Above lag 6: illusory duality dominates in raw data (det=+1, trend-induced positive correlation that masks the true structure).
tools/data/reports/agent_20260417_0803.md:111:**NEW: DIPOLAR_ILLUSORY_BOUNDARY**: The crossover at lag 6 where PNT trend overtakes structural anti-correlation is a quantitative realization of DUALITA_DIPOLARE_VS_ILLUSORIA. Below: dipolar (det=-1). Above: illusory (det=+1) unless normalized.
tools/data/reports/agent_20260417_0803.md:113:**CONSTRAINT on POISSON_CONVERGENCE**: The alpha drift (0.9 → 0.6) means the approach to Poisson is not just amplitude decay — the decorrelation structure itself changes. The Poisson crossover prediction (p* ~ 10^{12.6}) based on amplitude alone may need revision.
tools/data/reports/agent_20260417_0803.md:121:3. **Poisson crossover revision**: the amplitude-only prediction (A→0 at p*~10^{12.6}) assumed fixed alpha=1.0. With alpha drifting, the crossover might be different. The shape and amplitude evolve independently.
tools/data/reports/evolution_20260506_0330.md:5:Il passo ha invertito su se stesso: il risultato del run precedente (rank audit 05-05, un solo asse sotto shuffle uniforme) è stato trattato come claim da falsificare, non come fatto acquisito. Ha progettato quattro perturbazioni strutturalmente distinte per separare ciò che lo shuffle uniforme collassava. Traiettoria pulita: domanda autologica → disegno sperimentale mirato → risultato che discrimina (GUE ~2D, primi ~1.3D). 522s, 23 tool call, zero errori. Il passo è stato netto.
tools/data/reports/evolution_20260506_0330.md:11:1. **GUE a N=253**: il campione è piccolo per costruzione (matrice 23x23). L'agente lo dichiara come caveat ma non ha tentato di salire (50x50 è fattibile nello stesso budget). Non è attrito grave — il sign flip in L2 è qualitativo e regge — ma la dimensione del campione resta il primo punto d'attacco per chi vuole declassare il risultato.
tools/data/reports/evolution_20260506_0330.md:17:Nessun fallimento. Il nodo regressivo minore è nella **costruzione del campione GUE**: la dimensione della matrice è fissata a 23x23 per default storico, non per necessità computazionale. Il vincolo vive nel template dell'esperimento, non nel run. Se il prossimo run tocca GUE, la condizione da portare è: dimensione matrice come parametro esplicito, non costante ereditata.
tools/data/reports/evolution_20260506_0330.md:23:2. **Dimensionalità perturbativa come invariante di dominio**: GUE ~2D, primi ~1.3D. Questa asimmetria è misurabile, falsificabile, e indipendente dall'osservabile scelto. È un candidato per il prossimo incrocio con la struttura mod-3 già vista nei run precedenti: la dimensionalità extra di GUE vive nella stessa direzione di mod-3 o in una ortogonale?
tools/data/reports/evolution_20260506_0330.md:25:3. **L2 come discriminatore di regime**: il sign flip di L2 sotto adjacent-swap vs large-gap-only in GUE è qualitativo. L2 non è solo un osservabile — è un operatore che separa regimi perturbativi. Questo apre la porta a una classificazione delle perturbazioni per firma osservabile, non per costruzione.
tools/data/reports/evolution_20260506_0330.md:29:Il ciclo seguente potrebbe incrociare la dimensionalità perturbativa (2D GUE vs 1.3D primi) con la struttura modulare (mod-3, residui): se il secondo asse di GUE è allineato o ortogonale alla direzione modulare, la mappa delle correlazioni guadagna una coordinata.
tools/data/reports/report_20260328_0344.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260328_0344.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.9348 (GUE standard=0.60)
tools/data/reports/report_20260328_0344.md:26:- brownian_motion_var_0.3: r=0.9882352941176471, spacing=Poisson-like
tools/data/reports/report_20260328_0344.md:27:- logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like
tools/data/reports/report_20260328_0344.md:28:- ising_2d_var_0.1: r=0.9908867676670138, spacing=GUE-like
tools/data/reports/report_20260328_0344.md:29:- logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like
tools/data/reports/agent_20260509_0846.md:7:observables_used: [`generator_class`, `source_mode`, `event_type`, `vc_interp`, `label_jaccard`, `hamming_ratio`, `internal_cross_rate`, `no_cross_rate`, `floor_hit_rate`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
tools/data/reports/agent_20260509_0846.md:15:- **Operatori laterali scelti**: boundary operator, filtrazione per classe, grafo dei morfismi. Entrano per separare esistenza dell'attraversamento, direzione del valore e classe che conserva o rompe il ponte.
tools/data/reports/agent_20260509_0846.md:87:- **Singolare**: la riga boundary prima che `event_type` decida se la soglia esiste, cade al floor o non attraversa.
tools/data/reports/evolution_20260425_0330.md:5:Il passo ha seguito una consecutio pulita: il risultato TWO_KINDS_GUE (distribuzione vs ordinamento) del 24/04 ha aperto una domanda precisa — "in quale canale vive la memoria Markov?" — e l'agente l'ha colta senza deviare. La traiettoria è stata: separare i canali (tercile vs mod-6), misurare ciascuno indipendentemente, confrontare attraverso i tipi GUE. 36 tool calls in 16 minuti, zero errori, nessun tool rimasto senza risposta. Il passo ha prodotto una discriminazione netta (140x) che non era visibile nei risultati precedenti dove i canali erano mescolati.
tools/data/reports/evolution_20260425_0330.md:17:1. **Saturation depth come asse indipendente.** Il 14% di saturazione delle string vibrations vs il 44% dei primi vs il 100% del logistic è un dato nuovo che non è ancora entrato nel vocabolario del seme. Non è un finding — è una coordinata. Il prossimo ciclo potrebbe chiedersi: la profondità di saturazione ha una firma sotto M? Se sì, è un terzo asse dopo tipo-GUE e canale-memoria.
tools/data/reports/evolution_20260425_0330.md:19:2. **L'eterogeneità della classe Poisson.** Il run ha notato che il r-statistic classifica come Poisson domini con memoria Markov da 0% a 99%. Questo non falsifica il r-test — lo confina. Il confine GUE/Poisson misurato dal r-test è una proiezione 1D di uno spazio almeno 2D. Il passo successivo naturale: esiste una firma composita (r + saturazione) che separa senza ambiguità?
tools/data/reports/evolution_20260425_0330.md:21:3. **Assenza di canale algebrico nell'ordering-GUE.** Il run l'ha affermato ma non l'ha falsificato attivamente. La domanda regressiva è: esiste un equivalente strutturale del mod-6 per eigenvalue spacings? (es. mod-N sulla parte intera degli spacings normalizzati). Se no, il risultato si rafforza. Se sì, il 140x si ridimensiona. Un test a costo quasi zero.
tools/data/reports/agent_20260508_2019.md:8:**observable_contract**: claim=se il portatore contratto del core phi e' ordine interno + scala Fibonacci-like, il core phi deve decadere quando il lettore theta=1/phi resta fisso ma il generatore Sturmian cambia pendenza; observable=retention del core phi basso [-1,1,-2,2], alto [3,-4,4,6], completo [-1,1,-2,2,3,-4,4,6] e overlap mediano; operator=Hamiltoniana tight-binding V=1, gap labels dei top gap larghi, reader fisso theta=1/phi contro controllo reader nativo; generator=Sturmian phi, silver, bronze, plastic; denominator=main N={233,377,500,610}, phase={0,0.25,0.5,0.75}, threshold={1.75,2.0,2.25}, top_k=12, |n|<=34; seedcheck N={144,288,466,754}, phase={0.125,0.375,0.625,0.875}, threshold={1.9,2.1}; not_tested=gap_ratio, boundary esatto del supertile, domini GUE/Poisson reali, automa formale della sostituzione.
tools/data/reports/agent_20260508_2019.md:15:- **Contaminazione cognitiva**: CE-0001 KSAR usato. Il kernel del ciclo 20:13 viene reiterato cambiando piano: non un altro boundary reader, ma il contro-polo naturale del generatore.
tools/data/reports/agent_20260508_2019.md:20:> Il core phi alto non e' un boundary esatto: e' una tassonomia generatore-lettore. Cambiando pendenza Sturmian e tenendo fisso theta=1/phi, il core phi decade; con reader nativo riappare una struttura ordinata propria.
tools/data/reports/agent_20260508_2019.md:73:**CONSTRAINT on TRASCENDENZA_LIMITE / QPG_GAP_RATIO_DENOMINATOR_GATE**: nel perimetro dichiarato, il core phi non trasferisce ai generatori Sturmian non-phi quando il reader resta theta=1/phi. La perdita non e' disordine: con reader nativo i generatori non-phi mostrano core stabili e label-error basso. Formulazione valida: il portatore del core non e' il boundary esatto ne' il reader phi da solo; e' l'accoppiamento generatore-lettore. Il low core misura stabilita di famiglia Sturmian, il high core misura una coordinata piu' selettiva e denominatore-dipendente.
tools/data/reports/agent_20260508_2019.md:87:- **L3 no silent patching**: il boundary esatto non viene salvato; il claim viene contratto al portatore generatore-lettore.
tools/data/reports/agent_20260418_0330.md:5:**Tension explored**: DIPOLAR_ILLUSORY_BOUNDARY (0.9)
tools/data/reports/agent_20260418_0330.md:105:**CONSTRAINT on DIPOLAR_ILLUSORY_BOUNDARY**: The crossover lag is k* = A/C, a smooth function of scale. As primes grow (A decays per ACF_AMPLITUDE_SCALING), k* should SHRINK — the dipolar-illusory boundary moves to shorter lags at larger primes. The dipolar regime narrows with scale.
tools/data/reports/agent_20260418_0330.md:115:3. **Revised Poisson crossover**: If the dipolar regime narrows (k* shrinks) with scale, then at the Poisson crossover (p*~10^{13}), k* might be just 1-2 lags — meaning only the nearest-neighbor anti-correlation survives. The approach to Poisson is not just amplitude decay but REGIME NARROWING.
tools/data/reports/agent_20260514_1701.md:4:**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / BOUNDARY GUE-Poisson  
tools/data/reports/agent_20260514_1701.md:12:- **Combo**: A9 terzo incluso + A11 combo + ponte QxG continuo/discreto + tensione `TENS_SCALE_TRASCENDENZA_LIMITE` + direzione viva BOUNDARY GUE/Poisson.
tools/data/reports/agent_20260514_1701.md:15:- **Operatori laterali scelti**: `operator algebra` per leggere lo spettro tridiagonale; `boundary operator` per trattare il gap grande come bordo; `same density random` per separare grammatica da densita.
tools/data/reports/agent_20260514_1701.md:28:- `why`: riprende la direzione viva sul confine GUE/Poisson attraverso il nodo indicato da `dnd_scenario.py`, `TENS_SCALE_TRASCENDENZA_LIMITE`, distinguendo grammatica da scala.
tools/data/reports/agent_20260514_1701.md:43:- **Punto fisico sorgente**: confine GUE/Poisson come transizione fra repulsione spettrale e indipendenza.
tools/data/reports/evolution_20260423_0330.md:5:Il passo ha seguito una traiettoria lineare e pulita: tensione BOUNDARY + TWO_CHANNEL consecutio → domanda precisa (il Markov-3 decade con la scala?) → esperimento a 132 finestre con null baseline → risultato strutturale (separazione scala-dipendente / scala-invariante). 528 secondi, 22 tool calls, zero errori, zero tool sospesi. Il produttore ha scelto uno scope calibrato al budget e l'ha eseguito senza deviazioni.
tools/data/reports/evolution_20260423_0330.md:21:3. **Il Brody β come funzione di scala è un dato riusabile.** La regressione β(ln p) con R²=0.72 è un risultato autonomo dalla decomposizione a due canali. Può servire come baseline per qualsiasi futuro esperimento sulla tensione BOUNDARY — il tasso di drift verso Poisson è ora quantificato.
tools/data/reports/agent_20260508_1805.md:8:**observable_contract**: claim=il core phi dei gap larghi richiede generatore globale, non solo lettore label; observable=retention dei label core sotto block shuffle; operator=Hamiltoniana tight-binding V=1, label IDS con reader theta=1/phi, Jaccard/retention/frequenza per block_size; generator=phi_sturmian con block_shuffle; denominator=N={377,610}, phase={0,0.25,0.5,0.75}, threshold={2.0}, trials=5, top_k=12, |n|<=34, block_size Fibonacci e non-Fibonacci; not_tested=gap_ratio, generatori Sturmiani non-phi, GUE/Poisson, soglie 1.75/2.25.
tools/data/reports/agent_20260413_0330.md:9:> If acf(k) ~ -A(p)/k, then via Wiener-Khinchin the PSD low-frequency suppression should track A(p). The two measurements (time-domain ACF, frequency-domain PSD) must give consistent Poisson crossover predictions.
tools/data/reports/agent_20260413_0330.md:48:### Poisson crossover predictions
tools/data/reports/agent_20260413_0330.md:64:1. **PSD dip and ACF amplitude give the same Poisson crossover: p* ~ 10^{12.6}.** Two independent measurements (time-domain and frequency-domain) converge on the same number. This is not a coincidence — it's the Wiener-Khinchin theorem working as expected, but now verified empirically across scales.
tools/data/reports/agent_20260413_0330.md:68:3. **|acf1| has the weakest scaling (R^2=0.38, p=0.058).** The lag-1 ACF is noisier than PSD-based metrics for detecting scale evolution. This constrains how to measure decorrelation: PSD metrics are more robust than single-lag ACF for tracking the approach to Poisson.
tools/data/reports/agent_20260413_0330.md:84:- **CONFIRMED on ACF_AMPLITUDE_SCALING**: The PSD independently predicts the same Poisson crossover (10^{12.6}). Wiener-Khinchin consistency verified.
tools/data/reports/agent_20260413_0330.md:90:The unified picture is: prime gaps decorrelate logarithmically in p, with a 3-decade spread (10^{11.5} to 10^{14.5}) across observables. The hierarchy is: spectral tilt → ACF memory → spectral dip → ACF envelope → Brody shape → level spacing ratio. **What determines this ordering?** Is it specific to primes, or does any anti-correlated sequence approaching independence lose structure in this order? A Berry-Robnik mixture with tunable mixing parameter could test this — sweep from GUE to Poisson and measure the same 5 observables.
tools/data/reports/report_20260401_0346.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260401_0346.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.9348 (GUE standard=0.60)
tools/data/reports/report_20260401_0346.md:25:- ising_2d_var_0.1: r=0.9969894889487128, spacing=GUE-like
tools/data/reports/report_20260401_0346.md:26:- logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like
tools/data/reports/report_20260401_0346.md:27:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260401_0346.md:28:- logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like
tools/data/reports/agent_20260514_1656.md:8:**observable_contract**: claim=il report 16:49 diventa fit-ready per falsifier e graph completion solo se espone anche la contaminazione cognitiva che ha trasformato il deposito in strumento; observable=`component_state(SR,L1,triple_var)` + `fit_ready_contract_presence`; operator=report-level audit + `tools/graph_completion_compiler.py`; generator=nessun nuovo dominio, riuso `tools/data/component_state_fit_ready_20260514_1649.json`; denominator=report 16:49 + artifact fit-ready 16:49 + audit temporaneo graph completion; non_possible=cambiare contenuto scientifico, aggiungere domini o promuovere automaticamente il grafo; not_tested=nuovi dataset fisici, nuova separazione GOE/GUE, integrazione live del grafo.
tools/data/reports/agent_20260514_1656.md:116:Il cycle ripara il contratto del report 16:49 per L6: nomina CE-0117 e KSAR, dichiara la trasformazione da risultato locale ad artifact fit-ready con transfer/blank/fall e trace, e conserva il boundary `not_integrated_operator_decision_required`.
tools/data/reports/agent_20260514_0330.md:4:**Tension explored**: BOUNDARY / prime-vs-mod6 residual  
tools/data/reports/agent_20260514_0330.md:15:- **Combo**: A2 confine det=-1 + A9 terzo incluso + QxG continuo/discreto + BOUNDARY + direzione viva `prime_vs_mod6_SR_boundary`.
tools/data/reports/agent_20260514_0330.md:32:- `not_drift`: non torna a GUE/Poisson, `V_c`, fit o controlli larghi; il solo antagonista e il pre-bordo mod6 indicato dalla consecutio.
tools/data/reports/agent_20260514_0330.md:38:- **operator**: `tools/exp_prime_vs_mod6_sr_boundary.py` con `--trace-jsonl`.
tools/data/reports/agent_20260514_0330.md:103:- Script: `tools/exp_prime_vs_mod6_sr_boundary.py`
tools/data/reports/agent_20260514_0330.md:104:- Data: `tools/data/prime_vs_mod6_sr_boundary_20260514_0330.json`
tools/data/reports/agent_20260514_0330.md:105:- Trace: `tools/data/prime_vs_mod6_sr_boundary_20260514_0330.trace.jsonl`
tools/data/reports/agent_20260514_0330.md:106:- Seed check: `tools/data/prime_vs_mod6_sr_boundary_20260514_0330_seedcheck.json`
tools/data/reports/agent_20260514_0330.md:107:- Seed trace: `tools/data/prime_vs_mod6_sr_boundary_20260514_0330_seedcheck.trace.jsonl`
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:1:# Agent Report — The Binary Channel Is Universal: GUE Shares Scale-Invariant Anti-Bunching, But Only Primes Have Two Independent Channels
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:5:**Tension explored**: META (0.8) + C1 (claim) + BOUNDARY (0.8) + DUALITA_DIPOLARE_VS_ILLUSORIA (0.9)
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:9:> C1: Primes are the only dynamic domain under M among 7 tested.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:10:> Consecutio from last 3 runs: the two-channel structure (algebraic scale-invariant + statistical decaying) was established for primes. Does it exist in other domains?
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:14:If I apply the same two-channel decomposition (binary alternation channel + magnitude channel) to GUE eigenvalues, Cramer random primes, and real primes, which domains show scale-invariant channels — and how many independent channels does each have?
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:18:**Domains**: Primes (200K), GUE eigenvalues (40 matrices, size 600 = 14360 spacings), Cramer random primes (200K).
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:20:**Decomposition**: For primes, binary channel = mod-6 residue (+1/-1). For GUE and Cramer, binary channel = above/below-median gap. Magnitude channel = gap demeaned by binary class. The two channels measure independent aspects: alternation pattern vs gap-size correlations.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:35:| GUE | -9.7 | **-11.3** | +0.8 | -0.37 | **-0.007** | +0.52 |
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:40:### Per-domain details
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:44:**GUE** — binary channel z ranges [-13.1, -9.5], scale-invariant (corr = -0.007). ACF_binary = -0.15 to -0.18 (anti-bunching from level repulsion). Magnitude channel z = [0.2, 2.0] — **not significant**. The GUE correlation lives entirely in the alternation pattern; the gap magnitudes carry no additional memory beyond what alternation explains.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:50:Prime binary channel: slight positive corr (+0.40), meaning it doesn't decay and may slightly strengthen at larger primes. GUE binary channel: perfectly flat (corr = -0.007). Both are scale-invariant. The difference is that primes also have a magnitude channel; GUE does not.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:54:1. **The binary/anti-bunching channel is NOT unique to primes.** GUE eigenvalues show the same z-score magnitude (-11.3 vs -12.2) and even better scale invariance (corr = -0.007 vs +0.40). Anti-bunching (large-small-large-small alternation) is a universal property of repulsive-gap sequences, whether the repulsion is arithmetic (sieve) or statistical (level repulsion).
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:56:2. **The magnitude channel IS unique to primes.** GUE has z_mag = 0.8 (indistinguishable from random). Primes have z_mag = -4.1. After removing the alternation pattern, prime gaps still carry memory in their sizes. GUE gaps do not. This is the genuine fingerprint: primes have TWO independent correlation channels, GUE has ONE.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:58:3. **Cramer confirms the null.** Zero channels, as expected from independent gaps. The sieve (primes) and level repulsion (GUE) both CREATE structure; independent random draws do not. The structure they create differs in dimensionality (number of channels), not in strength.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:60:4. **C1 is refined, not falsified.** The original claim "primes are the only dynamic domain" is too broad — GUE is also dynamic (z ~ -10 binary channel). The precise claim: primes are the only domain with TWO independent correlation channels. GUE has one (alternation). Cramer has zero. The number of independent channels is the discriminator, not the strength of any single channel.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:64:**CONSTRAINT on C1 + NEW on BOUNDARY + DUALITA_DIPOLARE_VS_ILLUSORIA**
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:66:- **C1**: Primes are not unique in having scale-invariant correlations — GUE shares the binary channel. Primes ARE unique in having a second, independent magnitude channel. Reformulate C1: "Primes are the only domain with two independent scale-invariant correlation channels under the binary/magnitude decomposition."
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:68:- **BOUNDARY**: The boundary between "structured" and "unstructured" is not binary. It has at least 3 levels: 0 channels (Cramer/Poisson), 1 channel (GUE), 2 channels (primes). The "GUE-Poisson crossover" is about the binary channel only — the magnitude channel crossover is a separate phenomenon.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:70:- **DUALITA_DIPOLARE_VS_ILLUSORIA**: GUE's single channel is purely statistical (level repulsion) — it's generative duality (det = -1). Primes' two channels combine algebraic (mod-3, sieve) with statistical (magnitude) — two KINDS of duality operating simultaneously. The dual duality is the prime fingerprint.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:74:- **Due radici** (dipolo primario): one-channel structure (GUE: anti-bunching only) / two-channel structure (primes: anti-bunching + magnitude). The GUE pole is "correlation without algebra" — the primes pole is "correlation with algebra." Inverted: in one, all memory lives in alternation; in the other, alternation is the surface and magnitude carries the depth.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:76:- **Singolare**: the raw gap sequence before decomposition. It does not distinguish one-channel from two-channel. The r-statistic, which operates on raw gaps, collapses both channels into one number — this is WHY the r-statistic couldn't see what was unique about primes (it mixes channels). The singularity is the moment before the decomposition, where both domains look "GUE-like" but for different structural reasons.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:78:- **Invariante di passaggio**: the binary/anti-bunching channel survives the crossing between primes and GUE. It is the universal signature of repulsive-gap sequences, regardless of whether the repulsion is arithmetic or statistical. What does NOT survive: the magnitude channel. This is the asymmetry that discriminates.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:80:- **Campo di possibilita**: diventa possibile — classify domains by their NUMBER of independent correlation channels (0, 1, 2, ...) as a structural fingerprint. Diventa non-possibile — use any single observable (r, ACF, Brody beta) to discriminate primes from GUE. The single observable collapses channels; the discrimination lives in the decomposition.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:84:- Script: `tools/exp_two_channel_cross_domain.py` (reusable, parametric)
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0852.md:85:- Data: `tools/data/two_channel_cross_domain.json`
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:23:      "claim": "\"C1 is refined, not falsified\" dopo aver scritto che \"GUE is also dynamic\"",
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:24:      "evidence": "Il Claim Under Test dice: \"Primes are the only dynamic domain under M among 7 tested\". Il report afferma che GUE e' dynamic con z ~ -10 binary channel. Questo falsifica il C1 originale; la nuova forma a due canali e' un claim sostitutivo, non una semplice raffinazione silenziosa.",
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:25:      "suggestion": "Scrivere esplicitamente: \"C1 originale falsificato al nodo GUE; nuovo scope: primes unici fra questi domini con due canali indipendenti sotto questa decomposizione\"."
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:30:      "claim": "\"GUE gaps do not\" carry magnitude memory; \"magnitude channel ... not significant\"",
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:31:      "evidence": "Il report dà GUE z_mag range [0.2, 2.0]. Non supera la soglia z>3, ma il massimo e' al bordo convenzionale z=2, non assenza assoluta.",
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:37:      "claim": "\"NEW on BOUNDARY\" e \"binary/anti-bunching channel ... universal signature of repulsive-gap sequences\"",
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:38:      "evidence": "Level repulsion/GUE gap anti-bunching e bias nei residui/gap dei primi sono aree classiche; per i primi il vicino naturale include Lemke Oliver-Soundararajan su bias nei pattern di residui consecutivi. Il report marca NEW senza ancoraggio al risultato classico piu' vicino.",
tools/data/reports/_quarantine_falsifier_29_04/falsifier_20260429_0852.json:39:      "suggestion": "Declassare NEW a re-discovery/operational bridge finche' non viene confrontato con risultati noti: GUE level repulsion, nearest-neighbor spacing statistics, e bias di residui consecutivi nei primi."
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:5:**Tension explored**: BOUNDARY (0.8) + META (0.5)
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:8:> 8 domains GUE, 5 Poisson — the boundary is the third included (A9). Also: are we testing tautologies? (META)
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:11:The last 3 runs established: (1) algebraic memory is mod-3, (2) two-channel structure is real, (3) spectral rigidity is scale-dependent. Consecutio: **do the residue and magnitude channels lose structure at the same scale, or at different scales?** If different, the "GUE/Poisson boundary" measured by r-statistic is an artifact of mixing two fundamentally different behaviors.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:33:| r-statistic | 0.482 | 0.459 | Toward Poisson (0.386) |
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:44:1. **The residue channel has no boundary.** Its z-score against shuffle stays at 26-44 sigma across the entire range tested (primes from 23K to 4.5M, a 200x span). The decay correlation with ln(p) is -0.190 — essentially zero or slightly strengthening. The mod-3 prohibition (self-transition fraction ~0.40 vs shuffle ~0.61) is equally strong at all scales.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:46:2. **The magnitude channel has a boundary.** Its z-scores fluctuate between -2 and -7, with a weak positive correlation with ln(p) (0.455), meaning they drift toward the null at larger primes. This channel is what drives the r-statistic toward Poisson.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:48:3. **The r-statistic mixes two incommensurable behaviors.** Its decay (correlation +0.684 with ln(p)) is dominated by the magnitude channel weakening, while the residue channel stays constant. The "GUE/Poisson crossover" reported by r-statistic is not a single phase transition — it is the magnitude channel approaching noise while the algebraic channel remains invariant.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:53:**NEW + CONSTRAINT on BOUNDARY + META + DUALITA_DIPOLARE_VS_ILLUSORIA**
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:55:- **BOUNDARY**: There is no single boundary. The algebraic channel (residue, mod-3) has no boundary in the tested range. The statistical channel (magnitude) decays slowly. What was called "the GUE/Poisson boundary" is the mixing artifact of two channels with different scaling laws.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:59:- **DUALITA_DIPOLARE_VS_ILLUSORIA**: The residue channel is dipolar (det=-1): algebraic, scale-invariant, generated by the mod-3 prohibition. The magnitude channel approaches illusory (det=+1): statistical, decaying, approaching Poisson noise. The two types of duality coexist in the same sequence, separated by channel.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:63:- **Due radici** (dipolo primario): algebraic memory (residue channel, scale-invariant, mod-3 prohibition) / statistical memory (magnitude channel, decaying toward Poisson). One is permanent, the other transient. Both are real.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:65:- **Invariante di passaggio**: the channel decomposition itself. Whether you measure at p=23K or p=4.5M, the decomposition produces one algebraic and one statistical channel. The decomposition is the invariant; the boundary locations are the variables.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:66:- **Campo di possibilita**: here it becomes possible to predict that no amount of scaling will eliminate the mod-3 structure (it's algebraic, not statistical); here it becomes non-possible to use r-statistic as a single order parameter for the "boundary."
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:69:- Script: `tools/exp_two_channel_boundary.py` (reusable with --n_primes, --window, --n_surrogates)
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0833.md:70:- Data: `tools/data/two_channel_boundary.json`
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0958.md:44:**NEW + CONSTRAINT on META + BOUNDARY + DUALITA_DIPOLARE_VS_ILLUSORIA + C1**
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0958.md:47:- **BOUNDARY**: The boundary between structural and tautological observables is now mapped. Mod-3 (algebraic) and magnitude channel (statistical) are on the structural side. Lag-1 and ordering delta-r are on the tautological side. This is a concrete instance of A9 (terzo incluso) — the boundary itself is the content.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0958.md:49:- **C1**: The mod-3 signal (z ≈ -100) is the strongest evidence for C1 (primes as unique dynamic domain). No synthetic reproduces it. The mechanism is algebraic (F2: Z/6Z confinement), not statistical.
tools/data/reports/_quarantine_falsifier_29_04/evolution_20260429_0852.md:5:Il produttore ha seguito la consecutio dei 3 run precedenti (struttura two-channel stabilita) e ha posto la domanda giusta: la decomposizione binario/magnitudine e' esclusiva dei primi o e' una proprieta' universale dei sistemi repulsivi? Ha scelto GUE come controllo strutturale e Cramer come null — tre domini, una decomposizione, confronto diretto. La traiettoria e' stata: consecutio → domanda discriminante → esperimento comparativo → raffinamento di C1. Passo netto, 291s, zero errori.
tools/data/reports/_quarantine_falsifier_29_04/evolution_20260429_0852.md:17:1. **Scala dei canali come discriminatore universale**: il risultato (0 canali = Cramer, 1 = GUE, 2 = primi) apre la domanda: esistono domini a 3+ canali? Se no, perche' 2 e' il massimo? Questo e' un confine da esplorare, non da assumere.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:18:- **Positive control**: GUE eigenvalues from 4 matrices (1500×1500, bulk 25–75%)
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:35:- **Shuffle**: β_Σ **decreases** with L (0.43 → 0.01) — Poisson at large scales
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:39:### GUE control (note)
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:40:The GUE control gives erratic β_Σ values because the Brody calibration is built on i.i.d. gaps (no correlations between spacings). Real GUE eigenvalues have strong inter-spacing correlations that the Brody marginal cannot capture. This confirms: the Brody parameter is NOT a sufficient statistic for correlated sequences. The failure of the GUE control is itself evidence that correlations matter.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:48:3. **Shuffling inverts the scale dependence.** Shuffled primes: β_Σ = 0.43 at L=1, 0.01 at L=50 (decreasing — Poisson at large scales). Real primes: β_Σ = 0.45 at L=1, 0.95 at L=50 (increasing — GUE-like at large scales). The **sign** of the scale derivative dβ_Σ/dL is the discriminator: positive for real primes, negative for shuffled. This sign cannot be captured by any single-number statistic.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:50:4. **The GUE/Poisson classification via r alone loses the scale information.** Primes at r = 0.469 look "40% of the way from Poisson to GUE." But at L=50 they look "95% of the way." The boundary (BOUNDARY tension) is not a point in β-space — it's a curve β(L) whose shape discriminates real structure from randomness.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:53:**NEW + CONSTRAINT on META + BOUNDARY + DUALITA_DIPOLARE_VS_ILLUSORIA + C1**
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:57:- **BOUNDARY**: The GUE/Poisson boundary is not a threshold in r-space. It's a curve β(L) that separates sequences with increasing β(L) (structured: primes) from decreasing β(L) (decorrelated: shuffle). The sign of dβ/dL is the boundary criterion.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:61:- **C1**: Primes have increasing β(L) — are they unique? The two-channel model predicts that any sequence with a smooth density function overlaid with local chaos would show this. Testing other domains (zeros of Riemann zeta, eigenvalues of specific operators) would discriminate whether this is prime-specific or universal.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:65:- **Due radici** (dipolo primario): β_short ≈ 0.4 (local gap chaos, magnitude channel) / β_long ≈ 0.95 (PNT ordering, ordering channel). One face is Poisson-like, the other is GUE-like. They are the same sequence seen at different scales.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:66:- **Singolare**: the prime sequence itself, before any observable is applied. It is not "40% GUE" or "95% GUE" — it is the undivided source from which both measurements emerge. The β(L) function is the division; the sequence is prior to it.
tools/data/reports/_quarantine_falsifier_29_04/agent_20260429_0829.md:68:- **Campo di possibilità**: here it becomes possible to classify sequences by their β(L) slope, not by a single r value — richer than GUE/Poisson binary. Here it becomes non-possible to reduce a structured sequence to a single Brody parameter.
tools/data/reports/agent_20260502_0330.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8) + DIPOLAR_ORDERING (0.8)
tools/data/reports/agent_20260502_0330.md:9:> "The GUE-Poisson crossover has a phase transition" (report 2026-05-01 09:31).
tools/data/reports/agent_20260502_0330.md:15:If we apply the identical partial-shuffle crossover protocol to 7 different ordered sequences (GUE, Primes, Logistic map, AR(1) negative, Periodic 2-4, Random Walk excursions, Poisson), do they ALL show the same phase transition pattern? If yes, the previous finding is a method artifact. If no, what discriminates?
tools/data/reports/agent_20260502_0330.md:21:  1. GUE bulk spacings (60 matrices, size 126, bulk 60%, mean-normalized)
tools/data/reports/agent_20260502_0330.md:27:  7. Poisson (exponential gaps — control, no ordering)
tools/data/reports/agent_20260502_0330.md:34:- **Null**: Poisson (no ordering — should show no pattern)
tools/data/reports/agent_20260502_0330.md:40:| GUE | -97.8 | 0.2 | -0.373 | 0.991 | 0.86 | 104 | FULL |
tools/data/reports/agent_20260502_0330.md:46:| Poisson | -46.2 | 20.2 | -0.015 | 0.906 | 1.00 | 23 | PARTIAL (no lock, no flip) |
tools/data/reports/agent_20260502_0330.md:51:- **Cluster 1** (~-97 to -104): GUE (-97.8), AR1_neg (-94.7), Primes (-104.2), Periodic (-104.0)
tools/data/reports/agent_20260502_0330.md:53:- **No coherent direction**: RW_excursions, Poisson
tools/data/reports/agent_20260502_0330.md:55:Within Cluster 1, two sub-groups: {GUE, AR1_neg} at -96±2 deg, {Primes, Periodic} at -104±0.2 deg. The separation is 7 degrees — 6 sigma given Prime std of 1.2 deg.
tools/data/reports/agent_20260502_0330.md:68:2. **The direction at which ordering locks IS diagnostic.** Different ordering types lock at different angles: GUE at -98, AR1 at -95, Primes/Periodic at -104, Logistic at +110. The direction encodes WHAT KIND of ordering exists, independent of how much.
tools/data/reports/agent_20260502_0330.md:72:4. **Two ordering classes exist in the data.** {GUE, AR1_neg} form a "repulsion" class at theta ~ -96. {Primes, Periodic} form a "confinement" class at theta ~ -104. The 7-degree separation (6 sigma) between these classes is the residual that Markov-1 partially captures. Primes don't just have GUE-like repulsion — they have confinement-dominated ordering that happens to produce similar magnitudes.
tools/data/reports/agent_20260502_0330.md:74:5. **The previous report's finding is partially tautological, partially real.** Tautological: the EXISTENCE of a phase transition in the GUE crossover. Real: the specific DIRECTION of the lock and the fact that primes are 7 degrees away from GUE. The discriminating content was already in the direction offset, not in the phase transition itself.
tools/data/reports/agent_20260502_0330.md:78:**CONSTRAINT on BOUNDARY**: The dipolar phase transition under partial shuffle is nearly universal (5/7 ordered sequences). The existence of a zero-crossing at alpha ~ 0.7-0.9 is a property of the method (partial position shuffling destroys ordering linearly in magnitude). The phase transition ITSELF is not a discovery — it's a methodological consequence. Perimeter: tested with 7 sequence types, N=8000, 15 alpha levels, 10 trials. Two exceptions (Poisson, RW excursions) lack coherent initial ordering.
tools/data/reports/agent_20260502_0330.md:80:**CONFIRMED + REFINED on DIPOLAR_ORDERING**: The dipolar direction IS diagnostic of ordering type. Primes lock at -104.2 deg, matching periodic Z/6Z (2,4,2,4) to 0.2 deg. GUE locks at -97.8 deg. The 7-deg separation between "repulsion class" and "confinement class" is the structural content. The prime ordering is CONFINEMENT-dominated, not repulsion-dominated.
tools/data/reports/agent_20260502_0330.md:89:- **Campo di possibilita**: Possible — classify arbitrary ordered sequences by their dipolar direction ("ordering fingerprint"). Map the topology of ordering classes. Derive the prime direction (-104 deg) analytically from the Z/6Z constraint (F2). Not possible — claim the phase transition itself as a discovery specific to GUE or primes (it's universal). Not possible — separate prime ordering from Z/6Z confinement (they're the same thing in this projection).
tools/data/reports/agent_20260510_0330.md:4:**Tension explored**: BOUNDARY (0.8)  
tools/data/reports/agent_20260510_0330.md:8:**observable_contract**: claim=le due righe residue beta-absent sono strutturali solo se `beta_absent_blank` persiste in finestre row-local da 1024 gap; observable=`window_state` + firma degli osservabili one-sided; operator=`exp_boundary_residual_beta_absent_audit.py`; generator=`numeri_primi` da `dnd_autoricerca.genera_segnale` e `random_matrix` da `gue_spacing_blocks`; denominator=2 righe aperte BOUNDARY, full row + 4 finestre row-local da 1024 gap; non_possible=classe residua unica se una riga recupera beta o perde supporto nelle finestre row-local; not_tested=griglia beta globale, fit `V_c`, validita' label sorgente GUE/Poisson.
tools/data/reports/agent_20260510_0330.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + BOUNDARY 13 righe + residui `numeri_primi:cycle_3` / `random_matrix:cycle_7`.
tools/data/reports/agent_20260510_0330.md:15:- **Operatori laterali scelti**: boundary operator, chart locale, filtrazione. Il boundary operator separa supporto e beta; la chart locale testa la finestra senza rifare il mondo; la filtrazione conserva il denominatore row-aligned.
tools/data/reports/agent_20260510_0330.md:16:- **Contaminazione cognitiva**: CE-0019 usato come contratto combo prima della misura; CE-0022 usato come boundary operator + chart locale; KSAR usato come reiterazione sul deposito 15:32-18:39 senza ridisegnare il perimetro.
tools/data/reports/agent_20260510_0330.md:24:- `not_drift`: non usa `V_c`, non usa label GUE/Poisson come campo decisionale, non rigenera la griglia beta globale.
tools/data/reports/agent_20260510_0330.md:39:- Null baseline: permutazione marginal-preserving usata dal gate canonico gia' adottato nei report BOUNDARY.
tools/data/reports/agent_20260510_0330.md:40:- Non misurato: `gap_ratio`, `V_c`, nuova griglia beta globale, validita' delle label sorgente GUE/Poisson.
tools/data/reports/agent_20260510_0330.md:81:- **Campo di possibilità**: possibile = chiudere la tassonomia BOUNDARY con due sotto-stati residui; non-possibile = promuovere `medium/strong beta-absent` come specie unica del confine.
tools/data/reports/agent_20260510_0330.md:92:ssp_value: yes. Lo script e' uno strumento riusabile per audit row-local di residui BOUNDARY senza rigenerare fit globali.
tools/data/reports/agent_20260510_0330.md:96:- Script: `tools/exp_boundary_residual_beta_absent_audit.py`
tools/data/reports/agent_20260510_0330.md:97:- Data: `tools/data/boundary_residual_beta_absent_audit_20260510_0330.json`
tools/data/reports/falsifier_20260504_0901.json:9:      "claim": "The two Markov layers are coupled at the boundary. For primes, the critical alpha is identical across all 4 observables (0.334).",
tools/data/reports/falsifier_20260504_0901.json:17:      "evidence": "With 20 alpha steps from 0.05 to 0.95, step size = 0.047. The value 0.334 is grid point index 6. All four observables crossing 50% retention in the same bin means they are indistinguishable at resolution 0.047, not identical. The GUE case proves the method CAN detect differences (L1 at 0.287 vs others at 0.334 = one bin apart). For primes, true critical alphas could differ by up to 0.047 and still land in the same bin. The self-check mentions 'resolution limit' but Finding 1 says 'identical' — the stronger word propagates into the seme.",
tools/data/reports/falsifier_20260504_0901.json:23:      "claim": "Poisson shows Delta = -0.189 — spurious separation from noise amplification. This rules out the coupling being a trivial property of the metric.",
tools/data/reports/falsifier_20260504_0901.json:24:      "evidence": "The report itself shows all Poisson z-scores < 2 (no significant signal above baseline). If there is no signal, retention = (noise)/(noise), and critical alpha is undefined — it measures where random fluctuations cross an arbitrary threshold. A meaningless Delta from a no-signal sequence cannot serve as a control against which the primes/GUE Delta is validated. The argument 'Poisson shows separation therefore primes coupling is real' uses a noise artifact as if it were a measurement.",
tools/data/reports/falsifier_20260504_0901.json:25:      "suggestion": "Drop Poisson Delta from the coupling argument. The valid control statement is: 'Poisson has no detectable signal (all z < 2), so the retention metric is inapplicable; the metric is meaningful only for sequences with z >> 2.' Use GUE (which has real signal) as the sole comparison."
tools/data/reports/falsifier_20260504_0901.json:31:      "evidence": "The previous report defined two layers as having potentially independent degrees of freedom ('the boundary has genuine 3D depth'). This report concludes they are projections of one ordering. The scope of 'layer' silently narrows from 'independent dimension' to 'observable grouping' without explicitly marking the redefinition. The L3 self-check says 'what's constrained is their independence at the boundary' but doesn't flag that the original framing ('3D depth') is now falsified for uniform shuffle.",
tools/data/reports/falsifier_20260504_0901.json:32:      "suggestion": "State explicitly: 'The two-layer decomposition of agent_20260503 survives as an observable classification but its interpretation as independent boundary dimensions is falsified under uniform perturbation. The boundary depth question transfers to the selective-perturbation experiment.'"
tools/data/reports/falsifier_20260504_0901.json:42:  "summary": "The core finding — uniform shuffle destroys both layers at the same rate — is the expected null behavior of random permutations (L5), reported at a resolution too coarse to measure sub-bin differences (L4), and validated against a meaningless Poisson control (L2). The experiment is well-designed but the conclusion conflates 'method-blind perturbation' with 'structural coupling.' The report's own consecutio (selective perturbation) is the actual test."
tools/data/reports/agent_20260515_1623.md:14:- **Operatori laterali scelti**: `boundary operator` to distinguish active direction from vault context; `graph cut` to separate live pointers from blocked branches; `proof trace vs output trace` to compare tool classifications against generated field state.
tools/data/reports/trajectory_apply_20260507_0923.json:14:  "old_direzione": "Costruire una matrice di trasferibilita' del denominator gate: applicarlo a 3-4 perimetri non-BOUNDARY con poli coerente/illusorio e verificare quali parti trasferiscono (supporto one-sided, coordinat",
tools/data/reports/agent_20260411_0330.md:77:3. **The power-law model itself deteriorates.** R2 drops from 0.89 to 0.24 at large scales. The ACF at large primes is no longer well-described by a single power law — it may be transitioning to a different functional form (e.g., the Poisson limit where ACF=0 everywhere).
tools/data/reports/agent_20260411_0330.md:79:4. **Connection to operator's DUALITA_DIPOLARE_VS_ILLUSORIA.** The steep anti-correlation (alpha>1) is dipolar: each gap "knows" its neighbors strongly, decoupled from distant ones. The shallow anti-correlation (alpha<1) is diffuse: weak coupling spread everywhere, tending to the illusory (Poisson, det=+1). The transition from dipolar to diffuse IS the Poisson crossover, seen in a new observable.
tools/data/reports/agent_20260411_0330.md:82:**CONSTRAINT on ACF_1K_LAW** — The 1/k law is a scale-averaged description. Scale-resolved, the exponent drifts from ~2 to ~0.7. The anti-correlation transitions from localized (dipolar) to diffuse (approaching Poisson). Three things change simultaneously: amplitude A (confirmed), exponent alpha (new), and fit quality R2 (new).
tools/data/reports/falsifier_20260509_0837.json:30:      "claim": "la classe operativa del generatore deve entrare nel contratto boundary",
tools/data/reports/report_20260302_0341.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260302_0341.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260302_0341.md:26:- brownian_motion_var_0.5: r=0.6666666666666667, spacing=Poisson-like
tools/data/reports/report_20260302_0341.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260302_0341.md:28:- percolation_var_0.55: r=0.5873015873015873, spacing=Poisson-like
tools/data/reports/report_20260302_0341.md:29:- percolation_var_0.65: r=0.9607843137254901, spacing=Poisson-like
tools/data/reports/agent_20260508_1915.md:13:- **Piano superiore**: topologia assiomatica del contratto osservabile. Il boundary non si decide dal nome del mode, ma dal livello che sopravvive: congiunzione, singolo label, stabilita' 75%, errore IDS.
tools/data/reports/agent_20260508_1915.md:71:3. **Verificato: il controllo contiguo conserva piu' del supertile anche nel piano per-label.** `same_length_contiguous_shuffle` fa all-high `116/160` contro `108/160`, e per `3` fa `154/160` contro `128/160`. Il boundary esatto del supertile resta non discriminato dal label-set.
tools/data/reports/agent_20260508_1915.md:86:- **Campo di possibilita**: qui diventa possibile cercare il boundary nella geometria degli errori IDS e nella posizione dei gap; qui diventa non-possibile usare all-high, retention mediana e stable-label count come un solo osservabile.
tools/data/reports/agent_20260508_1915.md:89:Costruire il prossimo gate sul piano posizione/errore: per i label core, confrontare distribuzione IDS, rank dei gap selezionati ed errore label fra chunk aligned e misaligned. Il boundary reale deve spostare la geometria dei gap, non solo il set dei label.
tools/data/reports/agent_20260430_1946.md:1:# Agent Report — The Dipolar Angle Reference Frame: Primes Are Not Weak GUE
tools/data/reports/agent_20260430_1946.md:9:> The prime ordering signal at theta = -150 deg (previous run) is a unique direction, not just attenuated GUE. What angle do pure GUE, GOE, Poisson, and Cramer random primes have?
tools/data/reports/agent_20260430_1946.md:13:If primes were "weak GUE" (same ordering quality, lower magnitude), their dipolar angle would match GUE's. If they are structurally different, the angle will differ. Where do primes sit in the (delta_SR, delta_L1) plane relative to pure reference ensembles?
tools/data/reports/agent_20260430_1946.md:19:- **Sources**: real primes (p > 10000, 50K gaps), GUE (500×500 Hermitian, unfolded, 20 trials), GOE (500×500 symmetric, 20 trials), Poisson (iid exponential, 20 trials), Cramer random primes (same density, no correlations, 20 trials)
tools/data/reports/agent_20260430_1946.md:30:| GUE     | -96.6 +/- 0.1  | 0.6002  | -0.3062  | 8.37    |
tools/data/reports/agent_20260430_1946.md:32:| Poisson | -8.6 +/- 98.4  | 0.3864  | -0.0011  | undef   |
tools/data/reports/agent_20260430_1946.md:51:| GUE    | 14-17 deg | 170     |
tools/data/reports/agent_20260430_1946.md:53:| Poisson| ~105 deg  | 1.1     |
tools/data/reports/agent_20260430_1946.md:58:1. **GUE/GOE ordering is almost purely anticorrelation (dL1/dSR ~ 8).** The shuffle destroys strong lag-1 anticorrelation (level repulsion) but barely shifts the spacing ratio. GUE ordering is one-dimensional: anticorrelation dominates at ratio 8:1 over gap-size similarity.
tools/data/reports/agent_20260430_1946.md:60:2. **Prime ordering is a different mix: dL1/dSR = 2.28.** Primes have proportionally 3.7x more spacing-ratio depression relative to anticorrelation than GUE does. The ordering signal is not "attenuated GUE" — it has a different internal composition. The angular separation (14-17 deg) is >100 sigma from GUE.
tools/data/reports/agent_20260430_1946.md:64:4. **Poisson has no coherent dipolar angle (std = 98 deg).** iid gaps have no ordering structure — the shuffle IS the distribution. This is the expected baseline: zero ordering = undefined direction.
tools/data/reports/agent_20260430_1946.md:68:6. **Correction to previous run**: the previous report stated theta = -150 +/- 4 deg. The present measurement, over larger samples and more scales, finds -111 +/- 1 deg. The discrepancy (39 deg) likely arises from different scale windows or different normalization. The finding that the angle is stable across scales and different from GUE is confirmed; the numerical value is corrected here.
tools/data/reports/agent_20260430_1946.md:72:**CONFIRMED structure on DIPOLAR_ORDERING** (primes have a locked direction different from GUE)
tools/data/reports/agent_20260430_1946.md:73:**CONSTRAINT on META** (the ordering signal is non-tautological: 2 observables, 1 DOF, but the direction differs from GUE by 14 deg at >100 sigma)
tools/data/reports/agent_20260430_1946.md:80:- **Due radici** (dipolo primario): GUE ordering (anticorrelation-dominated, theta = -97 deg, dL1/dSR = 8) and Poisson non-ordering (no direction, theta undefined). These are the two extremes of the ordering spectrum — structured repulsion vs structureless randomness.
tools/data/reports/agent_20260430_1946.md:86:- **Campo di possibilita**: here it becomes possible to classify ordered sequences not by how much ordering they have (magnitude), but by what kind (angle). GUE = anticorrelation-dominated. Primes = balanced. Cramer = opposite. Here it becomes non-possible to treat prime ordering as "weak GUE" — the direction is different by 14 deg at 170 sigma.
tools/data/reports/agent_20260427_0330.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8)
tools/data/reports/agent_20260427_0330.md:9:> BOUNDARY: 8 domains GUE, 5 Poisson — the boundary is the third included operative.
tools/data/reports/agent_20260427_0330.md:16:- **Calibration**: The Brody distribution P(s) ~ s^beta exp(-c s^(beta+1)) smoothly interpolates from Poisson (beta=0) to Wigner-GOE (beta=1). Gaps are i.i.d. by construction — zero sequential correlation.
tools/data/reports/agent_20260427_0330.md:18:- **Real domains**: primes (10000 unfolded gaps), GUE matrices (400 eigenvalues), logistic map, pure Poisson, coupled oscillators.
tools/data/reports/agent_20260427_0330.md:20:- **Null baseline**: The Brody curve itself IS the null — any deviation of a real domain from the curve is the non-trivial signal.
tools/data/reports/agent_20260427_0330.md:44:### Real domains vs Brody curve
tools/data/reports/agent_20260427_0330.md:67:1. **The r-statistic is a faithful order parameter.** It increases monotonically with Brody beta (0.381 to 0.573), tracking real short-range repulsion without artifacts. Our GUE/Poisson classification via r is structurally sound.
tools/data/reports/agent_20260427_0330.md:73:4. **Primes sit at beta_eff = 0.409 — the exact midpoint of the Poisson-GUE crossover.** They are not "GUE-like" or "Poisson-like" — they are the boundary itself. Their gap distribution alone gives intermediate repulsion (beta ~ 0.4). Their sequential ordering adds an additional 30% rigidity that i.i.d. gaps cannot produce.
tools/data/reports/agent_20260427_0330.md:75:5. **The ordering channel has a definite sign that distinguishes domain types.** Primes: ordering adds rigidity (negative Delta). Logistic + coupled oscillators: ordering adds bunching (positive Delta, massive). GUE + Poisson: ON the curve (ordering is irrelevant). The sign of the deviation IS the diagnostic: det=-1 ordering (rigidity) vs det=+1 ordering (bunching).
tools/data/reports/agent_20260427_0330.md:78:**NEW + CONSTRAINT on META + BOUNDARY + C1 + DUALITA_DIPOLARE_VS_ILLUSORIA**
tools/data/reports/agent_20260427_0330.md:81:- **BOUNDARY**: Primes ARE the boundary. beta_eff = 0.409 places them at the midpoint of the Poisson-GOE crossover. The boundary is not between primes and something else — primes live ON it.
tools/data/reports/agent_20260427_0330.md:82:- **C1**: Primes are unique — the only domain where ordering adds rigidity while sitting at intermediate beta. GUE matrices have stronger repulsion but no ordering effect. Ordering-GUE domains have ordering but it creates bunching, not rigidity.
tools/data/reports/agent_20260509_1516.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE
tools/data/reports/agent_20260509_1516.md:8:**observable_contract**: claim=il gate `coherent/null/beta` del BOUNDARY sintetico trasferisce sul perimetro semi-reale base; observable=one-sided canonical observables, stable counts ai poli, endpoint distance e ambiguous beta; operator=`exp_semireal_boundary_transfer_gate.py`; generator=13 righe `boundary_denominator_prescan_full_20260509_1500` ricostruite da `dnd_autoricerca`; denominator=13 righe base BOUNDARY, 8 GUE-like e 5 Poisson-like, beta layers 0.0..1.0, 12 replicates, 24 shuffle baselines; non_possible=dichiarare beta 0.3 coordinata universale o transfer completo quando 2/13 righe cadono; not_tested=nuovi domini, nuovi spettri, fit `V_c`, limite asintotico.
tools/data/reports/agent_20260509_1516.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + perimetro BOUNDARY base 13/13 transfer + tensione viva "8 domini GUE, 5 Poisson".
tools/data/reports/agent_20260509_1516.md:14:- **Piano superiore**: grafo della conoscenza e boundary operator. La domanda non e' se GUE o Poisson vincono, ma se il passaggio resta morfismo quando il perimetro diventa fisico/semi-reale.
tools/data/reports/agent_20260509_1516.md:15:- **Operatori laterali scelti**: boundary operator, shuffle marginal-preserving, graph/perimeter transfer. Entrano per separare copertura del denominatore, supporto d'ordine e coordinata di transizione.
tools/data/reports/agent_20260509_1516.md:17:- **Proto-ipotesi**: il BOUNDARY semi-reale conserva il supporto ordine/null in molte righe, ma il blank beta e' proprieta del perimetro, non invariante del gate.
tools/data/reports/agent_20260509_1516.md:23:- `why`: porta la direzione BOUNDARY dal sintetico controllato al perimetro cross-dominio semi-reale 8 GUE / 5 Poisson.
tools/data/reports/agent_20260509_1516.md:27:> Il gate BOUNDARY `coherent/null/beta` trasferisce sul perimetro semi-reale base come supporto ordine/null e come blank beta condiviso.
tools/data/reports/agent_20260509_1516.md:33:- Nuovo strumento: `tools/exp_semireal_boundary_transfer_gate.py`.
tools/data/reports/agent_20260509_1516.md:34:- Input: `tools/data/boundary_denominator_prescan_full_20260509_1500.json`.
tools/data/reports/agent_20260509_1516.md:35:- Output: `tools/data/semireal_boundary_transfer_gate_20260509_1516.json`.
tools/data/reports/agent_20260509_1516.md:36:- Perimetro atomico: 13 righe base BOUNDARY, `source_domain_type` 8 GUE-like e 5 Poisson-like.
tools/data/reports/agent_20260509_1516.md:37:- Operatore: per ogni dominio ricostruisco spacings domain-native, creo beta layers contro permutation null, calcolo osservabili canonici e z original-vs-shuffle.
tools/data/reports/agent_20260509_1516.md:58:| brownian_motion:cycle_12 | Poisson | complete | 4096 | transfer_with_blank | SR2,L1,L2,triple_var | 4.000 | 0.167 | 3.885 | 0.2,0.3 |
tools/data/reports/agent_20260509_1516.md:59:| cellular_automata:cycle_8 | GUE | contaminated | 108 | fall | [] | 0.000 | 0.500 | 0.000 | [] |
tools/data/reports/agent_20260509_1516.md:60:| coupled_oscillators:cycle_10 | Poisson | contaminated | 2002 | transfer_with_blank | SR,SR2,L1,L2,triple_var | 5.000 | 0.250 | 4.336 | 0.3 |
tools/data/reports/agent_20260509_1516.md:61:| ising_2d:cycle_1 | GUE | contaminated | 699 | transfer_with_blank | SR,SR2,L1,L2,triple_var | 5.000 | 0.333 | 4.309 | 0.4 |
tools/data/reports/agent_20260509_1516.md:62:| logistica_biforcazione:cycle_5 | GUE | complete | 4096 | transfer_with_blank | SR,SR2,triple_var | 3.583 | 0.167 | 3.258 | 0.1-0.9 |
tools/data/reports/agent_20260509_1516.md:63:| logistica_biforcazione_var_3.5699:cycle_13 | GUE | complete | 4096 | transfer_with_blank | SR,SR2 | 2.000 | 0.083 | 2.769 | 0.3 |
tools/data/reports/agent_20260509_1516.md:64:| numeri_primi:cycle_3 | GUE | complete | 4096 | transfer_no_blank | SR,L1,triple_var | 3.000 | 0.167 | 3.243 | [] |
tools/data/reports/agent_20260509_1516.md:65:| pendolo_doppio:cycle_2 | Poisson | complete | 4096 | fall | SR,SR2,L1 | 5.000 | 0.833 | 3.388 | 0.3 |
tools/data/reports/agent_20260509_1516.md:66:| percolation:cycle_9 | Poisson | complete | 190 | transfer_no_blank | L1 | 0.833 | 0.333 | 1.705 | [] |
tools/data/reports/agent_20260509_1516.md:67:| random_matrix:cycle_7 | GUE | complete | 199 | transfer_no_blank | L2 | 1.000 | 0.250 | 1.854 | [] |
tools/data/reports/agent_20260509_1516.md:68:| reaction_diffusion:cycle_11 | GUE | contaminated | 499 | transfer_with_blank | SR,SR2,L1,L2,triple_var | 5.000 | 0.333 | 4.364 | 0.3 |
tools/data/reports/agent_20260509_1516.md:69:| string_vibration:cycle_6 | Poisson | complete | 4096 | transfer_with_blank | SR,SR2,L2,triple_var | 5.000 | 0.500 | 3.845 | 0.3 |
tools/data/reports/agent_20260509_1516.md:70:| zeta_zeros:cycle_4 | GUE | contaminated | 199 | transfer_no_blank | SR,L2 | 1.917 | 0.250 | 2.449 | [] |
tools/data/reports/agent_20260509_1516.md:82:Il gate BOUNDARY semi-reale trasferisce come supporto ordine/null in 11/13 righe. Non trasferisce come coordinata beta universale: 7 righe hanno blank, 4 trasferiscono senza blank, 2 cadono.
tools/data/reports/agent_20260509_1516.md:86:`BOUNDARY transfer` = supporto row-aligned ordine/null nel perimetro dichiarato.
tools/data/reports/agent_20260509_1516.md:90:`BOUNDARY blank` = beta 0.3 universale del terzo incluso cross-dominio.
tools/data/reports/agent_20260509_1516.md:96:- **Campo di possibilita**: qui diventa possibile usare BOUNDARY come audit cross-dominio row-aligned; qui diventa non-possibile dichiarare il terzo incluso come beta comune del perimetro semi-reale.
tools/data/reports/agent_20260509_1516.md:102:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/data/seme.json`, `tools/dnd_scenario.py --best`, report `agent_20260509_1437.md`, report `agent_20260509_1444.md`, report `agent_20260509_1457.md`, nuovo JSON `tools/data/semireal_boundary_transfer_gate_20260509_1516.json`.
tools/data/reports/agent_20260509_1516.md:113:- Verifica script: `python -m py_compile tools/exp_semireal_boundary_transfer_gate.py`.
tools/data/reports/agent_20260509_1516.md:116:- Run valido: `python tools/exp_semireal_boundary_transfer_gate.py --n-replicates 12 --n-baseline 24 --seed 202605091516 --out tools/data/semireal_boundary_transfer_gate_20260509_1516.json`.
tools/data/reports/agent_20260509_1516.md:120:- Script nuovo: `tools/exp_semireal_boundary_transfer_gate.py`
tools/data/reports/agent_20260509_1516.md:121:- Data: `tools/data/semireal_boundary_transfer_gate_20260509_1516.json`
tools/data/reports/next_exec_20260402_0344.json:10:        "action": "CRYSTALLIZE: TRANS_BOUNDARY_FALSIFICA_F2 — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/agent_20260405_0914.md:4:**BOUNDARY** (0.7): "La transizione GUE->Poisson e' un effetto densita'. Ma i primi hanno eccesso di correlazione che CRESCE con la scala."
tools/data/reports/agent_20260405_0914.md:12:- 3 baselines: Cramer model (10 trials each), shuffled gaps (10 trials each), and reference constants (GUE=0.5307, Poisson=0.3863)
tools/data/reports/agent_20260405_0914.md:31:- Primes drift from "weakly GUE-like" toward "Poisson-like" as scale increases
tools/data/reports/agent_20260405_0914.md:33:- Both values are between Poisson (0.386) and GUE (0.531), closer to Poisson
tools/data/reports/agent_20260405_0914.md:41:The "boundary" between GUE and Poisson is not a static boundary — it's a **trajectory**.
tools/data/reports/agent_20260405_0914.md:42:Primes start closer to GUE at small scale and drift toward Poisson at large scale.
tools/data/reports/agent_20260405_0914.md:52:- BOUNDARY claim "excess GROWS with n": **PARTIALLY FALSIFIED**
tools/data/reports/agent_20260405_0914.md:54:  - New claim: "Prime excess over Cramer is universal (all scales, z>18) but shrinks at -0.003/decade. Consecutive gaps anti-correlate (corr~-0.04) and this weakens at +0.006/decade. The trajectory is toward Poisson."
tools/data/reports/agent_20260405_0914.md:57:The "third included" at the boundary is not a fixed point — it's the trajectory itself.
tools/data/reports/agent_20260405_0914.md:58:The primes don't sit at GUE or Poisson; they trace a path between them.
tools/data/reports/agent_20260405_0914.md:59:The rate of approach to Poisson (~0.003/decade in excess, ~0.006/decade in correlation) is itself a structural invariant worth investigating.
tools/data/reports/agent_20260405_0914.md:61:Is there a scale where primes actually reach Poisson? Extrapolating linearly: at ~10^20 the excess would be near zero. But linear extrapolation of a logarithmic quantity is unreliable.
tools/data/reports/falsifier_20260514_1612.json:10:      "evidence": "Nei dati forniti, `lab_data.json` dichiara come direzione: \"Formalizzare il limite di scala del vettore prime-minus-mod6: micro-trace provider-indipendente, min_paired_rows pre-dichiarato, replica 4096/8192 e primo test oltre 8192 solo se il denominatore resta stabile\". Il report invece esegue un trasferimento GUE/Anderson con N=192 e 48 repliche, senza micro-trace 4096/8192 ne' min_paired_rows. La deviazione e' dichiarata, ma il `why` cita una direttiva operatore non visibile nei file forniti.",
tools/data/reports/falsifier_20260514_1612.json:17:      "evidence": "La struttura GUE -> Poisson -> Anderson localizzato ricade nel quadro classico delle statistiche spettrali Wigner-Dyson/GUE contro Poisson e della localizzazione Anderson. Il report dice che non cristallizza una nuova legge fisica, ma non nomina il risultato classico piu' vicino come baseline del ponte.",
tools/data/reports/falsifier_20260514_1612.json:18:      "suggestion": "Esplicitare che il test e' un riuso operativo di statistiche spettrali note, non scoperta fisica: confrontare `SR,L1,triple_var` con baseline standard come adjacent gap ratio / Wigner-Dyson vs Poisson / Anderson localization level statistics."
tools/data/reports/agent_20260509_1532.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE
tools/data/reports/agent_20260509_1532.md:7:observables_used: [`support_transfer`, `beta_coordinate_transfer`, `beta_state`, `ambiguous_beta`, `stable_count_coherent`, `stable_count_illusory`, `endpoint_distance`] - osservabili domain-native derivati dal gate semi-reale, non canonici SR/SR2/L1/L2/triple_var.
tools/data/reports/agent_20260509_1532.md:8:**observable_contract**: claim=la matrice BOUNDARY semi-reale va separata in due assi: `support_transfer` e `beta_coordinate_transfer`; observable=stato row-aligned del supporto ordine/null e stato locale della beta ambigua; operator=`exp_boundary_two_axis_matrix.py`; generator=deposito `semireal_boundary_transfer_gate_20260509_1516` senza uso operativo di label GUE/Poisson; denominator=13 righe BOUNDARY semi-reali del perimetro base; non_possible=salvare il claim "beta 0.3 universale" quando solo 4/13 righe hanno beta 0.3 esatta; not_tested=nuovi domini, nuovi null, nuovi beta layer, fit `V_c`, limite asintotico.
tools/data/reports/agent_20260509_1532.md:11:- **Prima impressione**: il falsifier del 15:16 ha indicato il nodo regressivo: la direzione chiedeva di non importare label GUE/Poisson. La correzione non e' rifare il run; e' leggere lo stesso deposito con due assi indipendenti.
tools/data/reports/agent_20260509_1532.md:12:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + BOUNDARY semi-reale 13 righe + direzione viva "support_transfer vs beta_coordinate_transfer".
tools/data/reports/agent_20260509_1532.md:14:- **Piano superiore**: grafo della conoscenza e boundary operator. Il bordo non e' una classe; e' una matrice di passaggio fra supporto e coordinata.
tools/data/reports/agent_20260509_1532.md:15:- **Operatori laterali scelti**: boundary operator, graph/perimeter matrix, coordinate split. Entrano per separare l'invariante di supporto dalla coordinata locale.
tools/data/reports/agent_20260509_1532.md:18:- **Possibile / non-possibile**: possibile = usare BOUNDARY come audit row-aligned di supporto su 11/13 righe; non-possibile = trattare beta 0.3 come terzo incluso universale del perimetro semi-reale.
tools/data/reports/agent_20260509_1532.md:24:- `not_drift`: non usa `source_domain_type` GUE/Poisson come operatore, non ritorna a `V_c`, non rifitta label locali; legge solo stati row-aligned gia' misurati.
tools/data/reports/agent_20260509_1532.md:27:> Il gate BOUNDARY semi-reale conserva `support_transfer` su molte righe, ma `beta_coordinate_transfer` vale solo dove beta 0.3 compare come coordinata esatta.
tools/data/reports/agent_20260509_1532.md:33:- Nuovo strumento: `tools/exp_boundary_two_axis_matrix.py`.
tools/data/reports/agent_20260509_1532.md:34:- Input: `tools/data/semireal_boundary_transfer_gate_20260509_1516.json`.
tools/data/reports/agent_20260509_1532.md:35:- Output: `tools/data/boundary_two_axis_matrix_20260509_1532.json`.
tools/data/reports/agent_20260509_1532.md:37:- Label policy: l'operatore non legge label GUE/Poisson. Usa solo `state`, `ambiguous_beta_one_sided_gated`, osservabili one-sided, stable counts ed endpoint distance.
tools/data/reports/agent_20260509_1532.md:76:1. **Verificato: `support_transfer` resta 11/13.** La lettura a due assi conserva il risultato utile del 15:16 senza importare label GUE/Poisson.
tools/data/reports/agent_20260509_1532.md:85:Il gate BOUNDARY trasferisce come supporto ordine/null su 11/13 righe. La coordinata beta 0.3 trasferisce esattamente su 4/13 righe. Questi due assi non coincidono.
tools/data/reports/agent_20260509_1532.md:89:`BOUNDARY support_transfer` = supporto row-aligned ordine/null nel perimetro dichiarato.
tools/data/reports/agent_20260509_1532.md:93:`BOUNDARY beta_coordinate_transfer` = beta 0.3 universale del terzo incluso semi-reale.
tools/data/reports/agent_20260509_1532.md:100:- **Invariante di passaggio**: separazione tra supporto e coordinata; non label GUE/Poisson e non beta comune.
tools/data/reports/agent_20260509_1532.md:104:Il prossimo ciclo deve attaccare i quattro stati beta, non il supporto gia' separato: `beta_0_3_exact`, `beta_0_3_local_nonunique`, `local_beta_other`, `support_without_beta_blank`. La domanda aperta e' se questi stati dipendono da qualita' domain-native del segnale o dal criterio di ambiguous fraction. Non va reintrodotta la label GUE/Poisson come scorciatoia.
tools/data/reports/agent_20260509_1532.md:107:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/data/seme.json`, `tools/dnd_scenario.py --best`, report `agent_20260509_1516.md`, falsifier `falsifier_20260509_1516.json`, script `tools/exp_boundary_two_axis_matrix.py`, JSON `tools/data/boundary_two_axis_matrix_20260509_1532.json`.
tools/data/reports/agent_20260509_1532.md:118:- Verifica script: `python -m py_compile tools/exp_boundary_two_axis_matrix.py`.
tools/data/reports/agent_20260509_1532.md:119:- Run valido: `python tools/exp_boundary_two_axis_matrix.py --input tools/data/semireal_boundary_transfer_gate_20260509_1516.json --out tools/data/boundary_two_axis_matrix_20260509_1532.json`.
tools/data/reports/agent_20260509_1532.md:124:- Script nuovo: `tools/exp_boundary_two_axis_matrix.py`
tools/data/reports/agent_20260509_1532.md:125:- Data: `tools/data/boundary_two_axis_matrix_20260509_1532.json`
tools/data/reports/agent_20260507_2203.md:28:| TQGE+R+S+U | 5 | QGE | QGR: frame_pair; QGS: scale_pair; QGU: boundary_pair | 0/50,000 sampled |
tools/data/reports/agent_20260507_2203.md:29:| TQGE+R+S+U+V | 6 | QGE | QGR: frame_pair; QGS: scale_pair; QGU: boundary_pair; QGV: observer_pair | 0/50,000 sampled |
tools/data/reports/agent_20260415_0330.md:65:3. **Both effects weaken with scale.** The unconditional <r> drifts from 0.454 to 0.445 (toward Poisson 0.386), and the conditional spread shrinks from -0.0027 to -0.0013. The distributed dipole decays slower than the local one — memory hierarchy confirmed: global structure is more robust than local conditioning.
tools/data/reports/agent_20260415_0330.md:75:The distributed nature of the dipole means: **what's the minimal subsequence length where the ordering signature appears?** If we take random contiguous windows of length L from the prime gap sequence, at what L does <r>_window significantly differ from <r>_shuffle? This would measure the *coherence length* of the dipolar structure — the scale below which primes look random and above which the collective anti-correlation emerges. The coherence length should grow with prime scale (toward Poisson).
tools/data/reports/agent_20260501_0330.md:66:2. **Higher-order correlations push the angle toward GUE by ~3 deg.** Markov-1 overshoots to -114.6 (farther from GUE at -97). Real primes are at -111.9. The higher-order memory has a GUE-ward component — it reduces the angular separation from GUE by ~20% (from 17 deg to 14 deg).
tools/data/reports/agent_20260501_0330.md:82:- **L5**: The transition matrix structure is Lemke Oliver-Soundararajan (2016). The new content is not the matrix itself but the quantification: pair statistics explain ~80% of the angular separation from GUE, with a stable ~3 deg residual from higher-order correlations. The LOS paper does not discuss dipolar angles or spacing ratios in this framework.
tools/data/reports/agent_20260501_0330.md:88:2. A higher-order component (+2.6 deg GUE-ward) — this is beyond pair statistics (z = 4.1)
tools/data/reports/agent_20260501_0330.md:94:- **Due radici**: Markov-1 ordering (pair statistics generate theta = -114.6, farther from GUE) and real prime ordering (theta = -111.9, closer to GUE). The two roots are "what pair correlations predict" and "what actually happens." The gap between them is the higher-order memory.
tools/data/reports/agent_20260501_0330.md:96:- **Invariante di passaggio**: The ~3 deg GUE-ward shift survives across 3 decades of scale. The higher-order memory is scale-invariant in direction, even as the magnitude decays.
tools/data/reports/agent_20260501_0330.md:97:- **Campo di possibilita**: Possible — decompose the prime ordering signal into pair-statistics (known, LOS) and residual (unknown, Markov-2+). Not possible — claim the full 14 deg separation from GUE as "beyond pair statistics"; 80% of it is Lemke Oliver.
tools/data/reports/agent_20260501_0330.md:101:The 3-deg residual is Markov-2+ memory. Previous lab findings: Markov-3 has z = 6203 (massive signal). The question: **does the Markov-3 component of prime gap memory have a preferred direction in the (SR, L1) plane?** If the Markov-3 signal has a GUE-ward direction, it would explain the residual. If it points elsewhere, there are multiple independent sources of higher-order memory.
tools/data/reports/evolution_20260504_0330.md:5:Il produttore ha ricevuto dal run precedente la decomposizione a due layer (Mk1/Mk2) e ha fatto la domanda giusta: i due layer sono indipendenti al confine o proiezioni di un'unica transizione? Ha costruito un esperimento pulito (partial shuffle, 20 step, controllo Poisson) e ha ottenuto una risposta netta: accoppiati, un'unica transizione, alpha critico ~0.33. Traiettoria lineare: domanda discriminante -> esperimento -> vincolo cristallizzato. 522 secondi, 23 tool call, zero errori.
tools/data/reports/evolution_20260504_0330.md:19:2. **Alpha critico universale**: 0.334 per primes, ~0.31 per GUE. La coincidenza (o non-coincidenza) di alpha_c tra sequenze strutturate diverse e' una domanda aperta. Se alpha_c dipende dal tipo di ordinamento, e' un discriminante tra classi di universalita'. Se e' universale, c'e' una ragione combinatorica (quanta permutazione serve per rompere il 50% di qualsiasi correlazione multi-punto?).
tools/data/reports/agent_test_field.md:1:# Agent Report — Three Roads to Poisson: Universal Crossover Scale
tools/data/reports/agent_test_field.md:5:**Tensions explored**: BOUNDARY (0.75), BRODY_CROSSOVER (0.85), GAP_ANTICORR (0.75), SPECTRAL_NICHE (0.85)
tools/data/reports/agent_test_field.md:9:> Three independent observables (Brody beta, gap ratio <r>, gap autocorrelation acf1) all drift toward Poisson at large prime scale. Do they predict the SAME critical scale p*, or do they separate into multiple decorrelation scales?
tools/data/reports/agent_test_field.md:13:If primes lose their spectral structure as p grows, the crossover to Poisson should be visible independently in (1) the shape of the gap distribution (beta), (2) the nearest-neighbor ratio (<r>), and (3) the sequential memory (acf1). A universal crossover predicts convergence at a single p*. Multiple decorrelation scales would indicate a hierarchy of structure loss.
tools/data/reports/agent_test_field.md:21:- **Targets**: Poisson values — beta=0, <r>=2ln2-1=0.386, acf1=0
tools/data/reports/agent_test_field.md:22:- **Method**: Linear regression of each observable vs ln(p), extrapolate to Poisson target
tools/data/reports/agent_test_field.md:38:1. **Universal crossover confirmed.** All three independent observables predict primes reach Poisson statistics at p* ~ 10^{13.7} to 10^{15.0}. The spread (1.3 decades) is small compared to the extrapolation range (5.6 decades from data to target). This is a single crossover, not three separate transitions.
tools/data/reports/agent_test_field.md:40:2. **Hierarchy of structure loss: shape > ratio > memory.** The ordering is not arbitrary: beta (distribution shape) decorrelates first at 10^{13.7}, then <r> (nearest-neighbor ratio) at 10^{14.5}, then acf1 (sequential anti-correlation) at 10^{15.0}. The global shape of the gap distribution approaches Poisson before the local ordering pattern does. The sequential big-small alternation (Hardy-Littlewood) is the most persistent structure.
tools/data/reports/agent_test_field.md:44:4. **Constraint on METRIC_TENSOR.** The de Sitter curvature dR operates in the metric g=(p/2)^2. The crossover at 10^{14} means dR loses predictive power above this scale. The de Sitter geometry is a good description of primes in the range 10^4 to 10^8, but the curvature fluctuations should flatten as primes approach Poisson. Testable at p > 10^9.
tools/data/reports/agent_test_field.md:50:**NEW** — The three-observable convergence to a universal Poisson crossover at p* ~ 10^{14} is a new result. The hierarchy (shape > ratio > memory) is a structural prediction: the last thing primes lose is their sequential anti-correlation. This constrains all tensors (METRIC_TENSOR, BOUNDARY, BRODY_CROSSOVER) into a single picture — the prime crossover is one phenomenon seen from three angles.
tools/data/reports/agent_20260409_0330.md:73:   a broadband (white-like) floor — the Poisson-like component.
tools/data/reports/agent_20260409_0330.md:81:   (Poisson floor) and S_anti ~ A*ln|2sin(pi f)| (anti-correlated dip).
tools/data/reports/agent_20260409_0330.md:95:  spectral peaks, and a two-component structure (Poisson floor + anti-correlated dip).
tools/data/reports/agent_20260409_0330.md:99:are a mixture of Poisson (white floor) and anti-correlated (blue dip), with the
tools/data/reports/report_20260331_0345.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260331_0345.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260331_0345.md:25:- logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260331_0345.md:26:- cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like
tools/data/reports/report_20260331_0345.md:27:- ising_2d_var_0.1: r=0.9990577358068202, spacing=GUE-like
tools/data/reports/report_20260331_0345.md:28:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/agent_20260420_0330.md:9:> PSD_BLUE_NOISE found a two-component structure (Poisson floor + anti-correlated dip) and a 2x amplitude gap between the 1/k ACF model and the PSD. TWO_CHANNEL_DECOMPOSITION found two independent anti-correlation channels (residue + magnitude). If these channels are spectrally independent, Wiener-Khinchin predicts S_total(f) = S_res(f) + S_mag(f) — and the two-component PSD structure should decompose into the two channels.
tools/data/reports/agent_20260420_0330.md:73:Both slopes decrease (approaching white noise = Poisson). Trans slope is more stable (+0.164 to +0.156, delta=5%) while magnitude decays faster (+0.081 to +0.068, delta=16%). The residue channel is **structurally constrained** — its spectral shape persists where magnitude fades. Consistent with universality finding (residue is algebraic, magnitude is number-theoretic).
tools/data/reports/agent_20260420_0330.md:75:Frac_trans decreases with scale: residue channel fades relative to magnitude. Consistent with "residue dies first" (Poisson at 10^14.9 vs 10^17.6).
tools/data/reports/agent_20260420_0330.md:83:3. **The PSD_BLUE_NOISE two-component structure IS the two channels.** The "Poisson floor" is the magnitude channel (99% of power, weakly blue). The extra low-f dip beyond what a single 1/k model predicts comes from the steeper residue channel layered on top.
tools/data/reports/agent_20260420_0330.md:93:The two-channel decomposition extends from the ACF domain to the spectral domain. The channels are spectrally independent (additivity holds to <0.5%). The blue-noise signature of prime gaps is a two-component mixture with distinct slopes. The PSD_BLUE_NOISE amplitude gap is a mixing artifact, not a model failure.
tools/data/reports/fibonacci_spectrum_20260306_1834.json:12:        "GUE": 0.29670833202771496,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:14:        "Poisson": 0.510008332027715,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:23:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:25:        "GUE": 0.1637341019241806,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:27:        "Poisson": 0.37703410192418063,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:36:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:38:        "GUE": 0.07108013924144507,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:40:        "Poisson": 0.2843801392414451,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:49:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:51:        "GUE": 0.0013531361002089293,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:53:        "Poisson": 0.21194686389979112,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:64:        "GUE": 0.033692181448734315,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:66:        "Poisson": 0.17960781855126573,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:77:        "GUE": 0.06412167049004891,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:79:        "Poisson": 0.14917832950995114,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:90:        "GUE": 0.09263337719183284,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:92:        "Poisson": 0.1206666228081672,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:103:        "GUE": 0.11916312020873215,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:105:        "Poisson": 0.09413687979126789,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:116:        "GUE": 0.14296513348744533,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:118:        "Poisson": 0.07033486651255472,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:127:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:129:        "GUE": 0.2041358611525424,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:131:        "Poisson": 0.009164138847457648,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:140:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:142:        "GUE": 0.2748295876655356,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:144:        "Poisson": 0.06152958766553557,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:153:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:155:        "GUE": 0.3640777020486299,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:157:        "Poisson": 0.15077770204862984,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:166:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:168:        "GUE": 0.43564800784619784,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:170:        "Poisson": 0.22234800784619782,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:179:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:181:        "GUE": 0.0013531361002089293,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:183:        "Poisson": 0.21194686389979112,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:192:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:194:        "GUE": 0.015680728701978786,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:196:        "Poisson": 0.19761927129802126,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:205:      "class": "GUE",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:207:        "GUE": 0.029241086644125502,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:209:        "Poisson": 0.18405891335587454,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:220:        "GUE": 0.04273384302801908,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:222:        "Poisson": 0.17056615697198096,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:233:        "GUE": 0.05567668696247785,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:235:        "Poisson": 0.1576233130375222,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:246:        "GUE": 0.06821895426251079,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:248:        "Poisson": 0.14508104573748926,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:259:        "GUE": 0.08041041520559711,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:261:        "Poisson": 0.13288958479440294,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:272:        "GUE": 0.09263337719183284,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:274:        "Poisson": 0.1206666228081672,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:285:        "GUE": 0.10444251980628838,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:287:        "Poisson": 0.10885748019371166,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:298:        "GUE": 0.11551666300995106,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:300:        "Poisson": 0.09778333699004899,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:311:        "GUE": 0.12622818756544568,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:313:        "Poisson": 0.08707181243455436,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:324:        "GUE": 0.1363444703271271,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:326:        "Poisson": 0.07695552967287295,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:337:        "GUE": 0.14625965183538286,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:339:        "Poisson": 0.06704034816461718,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:350:        "GUE": 0.15586954772482753,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:352:        "Poisson": 0.05743045227517252,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:361:      "class": "Poisson",
tools/data/reports/fibonacci_spectrum_20260306_1834.json:363:        "GUE": 0.16527431088573818,
tools/data/reports/fibonacci_spectrum_20260306_1834.json:365:        "Poisson": 0.04802568911426186,
tools/data/reports/falsifier_20260508_2013.json:24:      "evidence": "Il Claim Under Test riguarda boundary/Ostrowski/Zeckendorf, mentre il verdict nomina `QPG_GAP_RATIO_DENOMINATOR_GATE`; subito dopo dichiara che `gap_ratio` non e' testato. Non e' una falsificazione dei risultati, ma introduce drift nominale nel nodo del claim.",
tools/data/reports/falsifier_20260508_2013.json:25:      "suggestion": "Separare il constraint: 'CONSTRAINT on TRASCENDENZA_LIMITE / OSTROWSKI_BOUNDARY_GATE'; lasciare `QPG_GAP_RATIO_DENOMINATOR_GATE` fuori dal verdict o marcarlo come parent non testato."
tools/data/reports/report_20260404_1852.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260404_1852.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=1.0000 (GUE standard=0.60)
tools/data/reports/report_20260404_1852.md:25:- percolation_var_0.55: r=0.7543859649122806, spacing=Poisson-like
tools/data/reports/report_20260404_1852.md:26:- numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like
tools/data/reports/report_20260404_1852.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260404_1852.md:28:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/agent_20260509_1337.md:7:observables_used: [`denominator_state`, `fit_ready_rows`, `excluded_rows`, `excluded_events`, `vc_median_fit_ready`, `slope_per_N`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
tools/data/reports/agent_20260509_1337.md:15:- **Operatori laterali scelti**: boundary operator, graph cut, filtrazione. Entrano per tagliare il deposito in stati strutturali prima del fit.
tools/data/reports/evolution_20260506_1941.md:3:Il passo ha costruito una curva size-rank con gate sul denominatore, chiudendo il ciclo aperto dal run 03:30 (secondo asse GUE) e dal run 06:25 (restrizione). La traiettoria è stata: inflazione di rango osservata → ipotesi denominatore debole → costruzione del gate → falsificazione via controlli Poisson/shuffle. Il produttore ha invertito su se stesso: ha testato se il proprio strumento (PCA su retention) produceva artefatti, e ha trovato che sì. Passo autologico netto.
tools/data/reports/evolution_20260506_1941.md:19:3. **Chiusura del ciclo GUE-asse-2**: tre run consecutivi (03:30, 06:25, 19:41) hanno progressivamente ristretto il claim. Il ciclo è chiuso: il secondo asse GUE non è promovibile con gli osservabili canonici correnti. Può riaprirsi solo con osservabili nuovi o scale diverse.
tools/data/reports/report_20260329_0343.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260329_0343.md:22:- [✗] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.6344 (GUE standard=0.60)
tools/data/reports/report_20260329_0343.md:25:- logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like
tools/data/reports/report_20260329_0343.md:26:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260329_0343.md:27:- brownian_motion_var_0.3: r=1.3557126030624262, spacing=Poisson-like
tools/data/reports/report_20260329_0343.md:28:- logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like
tools/data/reports/falsifier_20260514_1649.json:10:      "evidence": "La lente L6 richiede che la contaminazione cognitiva nomini almeno una voce CE-*, YSN, Cornelius, KSAR, PVI/Vault usata nella combo, oppure dichiari 'CE-none:' con motivo specifico. Nel report fornito compaiono A2, A9, A11, ponte QxG, graph completion 16:40 e direzione BOUNDARY GUE/Poisson, ma nessun metabolizzatore cognitivo esplicito.",
tools/data/reports/agent_20260508_2102.md:8:**observable_contract**: claim=la dualita dipolare/illusoria nei primi non va letta da det(M) diretto ma dal supporto ordinato contro null; observable=rate low_low gap transition, rate high_high gap transition, SR mean difference; operator=Mobius interval charge S_n=sum mu(k) for p_n<k<p_{n+1}, aligned if S_n*S_{n+1}<0, misaligned if S_n*S_{n+1}>0; generator=prime gaps up to p<=1e6 with Mobius sieve; denominator=main N={5000,10000,20000} offset=0 plus seedcheck offsets {3000,7000,11000}; not_tested=gap_ratio Sturmian, high-core phi survival, universal GUE/Poisson classification, det(M) as direct discriminator.
tools/data/reports/agent_20260508_2102.md:14:- **Operatori laterali scelti**: entropia, boundary operator, random walk. Entropia entra come dispersione Mobius interna; boundary operator entra perche' il gap e' bordo tra due primi; random walk entra come null di permutazione della carica.
tools/data/reports/agent_20260508_2102.md:21:- **Proto-ipotesi**: se la dualita dipolare nei primi vive nel boundary aritmetico, la carica Mobius dell'intervallo prime-free deve selezionare un perimetro di gap contro permutazione. Se la selezione appare solo in SR o cade sotto permutazione, il substrato non ha prodotto osservabile nuovo.
tools/data/reports/agent_20260508_2102.md:74:Il prossimo passo non deve estendere il claim a tutti i primi o a GUE/Poisson. Deve isolare il nodo regressivo del null: ripetere con block-permutation della carica e con controllo per lunghezza del gap, per separare informazione Mobius autentica da dipendenza banale dalla dimensione dell'intervallo.
tools/data/reports/agent_20260506_1955.md:13:This run therefore does not test perturbation dimensionality. It asks a cross-domain META question:
tools/data/reports/agent_20260506_1955.md:15:> When the five canonical observables are measured under uniform partial shuffle, does observable collinearity break in structured domains, or only in controls where original-vs-shuffle denominators are weak?
tools/data/reports/agent_20260506_1955.md:24:- added `prime_shuffle` as a control domain;
tools/data/reports/agent_20260506_1955.md:28:- domains: first prime gaps, prime-shuffle control, independent GUE spacings, iid Poisson spacings;
tools/data/reports/agent_20260506_1955.md:41:| GUE | 0.990 | 1.060 | 0.989 | 0 | SR=-2.9, SR2=+14.5, L1=+13.2, L2=+31.7, triple_var=+23.8 |
tools/data/reports/agent_20260506_1955.md:42:| Poisson | 0.625 | 2.368 | 0.609 | 5 | all abs(z) <= 1.9 |
tools/data/reports/agent_20260506_1955.md:50:| GUE | 0.980 | 1.106 | 0.977 | 0.33 |
tools/data/reports/agent_20260506_1955.md:51:| Poisson | 0.714 | 2.196 | 0.572 | 5.00 |
tools/data/reports/agent_20260506_1955.md:55:1. **Structured domains compress the five canonical retention curves to one dominant coordinate in this perimeter.** Primes and GUE both have PC1 > 0.93 on average and effective rank close to 1. This does not say the domains are the same; it says uniform partial shuffle moves the canonical observables along one dominant retention mode.
tools/data/reports/agent_20260506_1955.md:57:2. **Observed collinearity breaking is concentrated in weak-denominator controls.** Poisson has the highest apparent rank among the three-run means (`2.196`), but all five observables are weak against full shuffle in every run. Prime-shuffle behaves similarly: rank is unstable and 4-5 of 5 observables are weak. This mirrors the denominator lesson from perturbation rank without repeating the perturbation-rank experiment.
tools/data/reports/agent_20260506_1955.md:59:3. **The 05-05 observable-rank result survives only after narrowing its language.** The valid statement is not "five probes are always one thing." The scoped statement is: under uniform partial shuffle and canonical observables, primes and GUE show a dominant one-coordinate retention response; controls can show larger PCA rank, but that rank is not structural when the original-vs-shuffle denominators are absent.
tools/data/reports/agent_20260506_1955.md:61:4. **GUE is the cleanest conditioning check.** In the main run, all five GUE observables pass the denominator gate and still give rank `1.060`. This makes GUE the best positive control for "low rank despite valid denominators." Poisson is the negative control for "high rank without valid denominators."
tools/data/reports/agent_20260506_1955.md:66:> observables_registry version + canonical observable list + original-vs-shuffle z per observable + control domains.
tools/data/reports/agent_20260506_1955.md:68:In this perimeter, high observable-rank is not the sign of richer structure when it appears in Poisson or prime-shuffle controls; it is a warning that retention ratios are being formed on weak denominators. The stable cross-domain result is narrower:
tools/data/reports/agent_20260506_1955.md:70:> uniform partial shuffle exposes one dominant retention coordinate in conditioned structured domains (primes, GUE), while apparent multi-coordinate behavior in Poisson/shuffle controls is denominator-weak.
tools/data/reports/agent_20260506_1955.md:73:What opens now: the next non-redundant test is not another PCA audit. It is **selective operator coupling**: use perturbations that act separately on pair-scale and triple-scale structure, but report only observables whose denominator gate survives. If selective operators rotate primes while GUE stays collinear, the lab gets a real cross-domain discriminator; if both stay collinear, the current observable suite is overcomplete for this question.
tools/data/reports/report_20260402_0756.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260402_0756.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=1.0000 (GUE standard=0.60)
tools/data/reports/report_20260402_0756.md:25:- percolation_var_0.55: r=0.7543859649122806, spacing=Poisson-like
tools/data/reports/report_20260402_0756.md:26:- numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like
tools/data/reports/report_20260402_0756.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260402_0756.md:28:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/agent_20260508_2005.md:8:**observable_contract**: claim=se il boundary simbolico del core alto esiste nella grammatica nativa della parola, le finestre locali attorno alle posizioni IDS dei gap core devono separare aligned supertile da misaligned same-length; observable=eccesso grammaticale locale rispetto a baseline Sturmian classica; operator=estrazione finestra circolare attorno a round(IDS*N) per ogni label core selezionato, misura p(k)<=k+1, right-special<=1, return-word excess sopra 2, difetto palindromico; generator=phi_sturmian perturbato da supertile_shuffle, same_length_contiguous_shuffle, same_count_internal_shuffle; denominator=N={377,610}, phase={0,0.25,0.5,0.75}, threshold={2.0}, trials=5, top_k=12, |n|<=34, supertile_order={8,9,10,11}, window={89 main, 55 seedcheck}, k={3,4,5,6,7,8}; not_tested=gap_ratio, domini GUE/Poisson reali, soglie 1.75/2.25, prova formale della grammatica Sturmian, generatori non-phi.
tools/data/reports/agent_20260508_2005.md:12:- **Dipolo / punto-zero**: boundary di chunk . grammatica locale della parola; punto-zero = la finestra attorno al gap prima che venga letta come taglio geometrico o come fattore simbolico.
tools/data/reports/agent_20260508_2005.md:14:- **Operatori laterali scelti**: boundary operator, fattori speciali, difetto palindromico. Entrano perche' il ciclo 19:47 ha falsificato set/IDS/rank come lettori del boundary esatto; il prossimo lettore deve essere nativo della parola.
tools/data/reports/agent_20260508_2005.md:16:- **Proto-ipotesi**: se il core alto porta boundary simbolico, `supertile_shuffle` deve mostrare finestre ad eccesso grammaticale zero piu' stabilmente di `same_length_contiguous_shuffle`. Se i due restano entrambi baseline-Sturmian, il boundary esatto non e' il portatore osservato; la frattura resta l'ordine interno.
tools/data/reports/agent_20260508_2005.md:20:> La grammatica simbolica locale dei gap core separa aligned supertile da misaligned same-length. Il portatore del core alto e' il boundary nativo della parola, non solo l'ordine interno.
tools/data/reports/agent_20260508_2005.md:89:4. **Inferito dal perimetro: il portatore osservato resta ordine interno locale, non boundary esatto.** Il controllo misaligned same-length conserva grammatica Sturmian locale almeno quanto l'allineato. Il boundary di supertile non compare come vantaggio in complessita, right-special, return-word excess o difetto palindromico.
tools/data/reports/agent_20260508_2005.md:91:5. **Correzione regressiva del report 19:47:** il linguaggio valido non e' "non-possibile cercare il boundary"; e': in questo perimetro, label-set, IDS/rank/errore e grammatica locale non separano aligned da misaligned. Il boundary resta non rilevato da questi osservabili.
tools/data/reports/agent_20260508_2005.md:94:**CONSTRAINT on TRASCENDENZA_LIMITE / QPG_GAP_RATIO_DENOMINATOR_GATE**: nel perimetro dichiarato, la grammatica simbolica locale attorno ai gap core non identifica il boundary esatto del supertile. `supertile_shuffle` e `same_length_contiguous_shuffle` hanno mediana `grammar_excess_total=0` e zero-excess alto; il controllo misaligned e' piu' baseline-Sturmian dell'allineato nel rate aggregato high (`576/591` vs `503/564`, replica `583/590` vs `536/566` con window 55). La frattura strutturale resta la distruzione dell'ordine interno: `same_count_internal_shuffle` produce zero-excess `0` e eccessi mediani non-zero su tutti i canali.
tools/data/reports/agent_20260508_2005.md:96:Formulazione valida: il core phi alto misura una chiusura congiunta di ordine interno locale e lunghezze Fibonacci-like; non misura boundary esatto del supertile nei lettori testati. `gap_ratio` non e' testato.
tools/data/reports/agent_20260508_2005.md:99:- **Due radici**: grammatica locale Sturmian . boundary esatto del supertile.
tools/data/reports/agent_20260508_2005.md:102:- **Campo di possibilita**: qui diventa possibile chiudere il ramo boundary locale per questo perimetro e spostare il test sul livello globale del generatore. Qui resta aperto un test diverso: non finestre attorno ai gap, ma automa/ostrowski numeration o riconoscibilita globale della sostituzione.
tools/data/reports/agent_20260508_2005.md:105:Il prossimo passaggio non deve aggiungere un altro lettore locale. Deve testare il piano globale: se il boundary esatto esiste come portatore, deve comparire nella riconoscibilita della sostituzione o nella numerazione di Ostrowski dei gap selezionati. Se anche li' aligned e misaligned restano equivalenti, il claim va contratto definitivamente a "ordine interno locale + lunghezze Fibonacci-like".
tools/data/reports/agent_20260508_2005.md:110:- **L3 no silent patching**: l'ipotesi boundary simbolico cade in questo gate; non viene salvata cambiando osservabile nel verdict.
tools/data/reports/agent_20260508_2005.md:112:- **L5 re-discovery guardrail**: le proprieta Sturmian sono baseline dichiarata. Il finding e' negativo sul boundary e positivo sulla rottura internal-shuffle, non sulla riscoperta di complessita Sturmian.
tools/data/reports/agent_20260509_1556.md:4:**Tension explored**: BOUNDARY / TRASCENDENZA_LIMITE  
tools/data/reports/agent_20260509_1556.md:7:observables_used: [`SR`, `SR2`, `L1`, `L2`, `triple_var`, `extension_state`, `after_one_sided`, `after_beta`, `after_support_tier`, `endpoint_distance_one_sided_gated`] - osservabili canonici piu' stati domain-native di audit.  
tools/data/reports/agent_20260509_1556.md:9:**observable_contract**: claim=`blank_thin_support` sopravvive solo se, dopo estensione del denominatore sorgente, resta supporto vivo sottile senza beta chart; observable=gate canonico one-sided + beta chart sulle tre righe short; operator=`exp_boundary_short_denominator_extension.py`; generator=`source-denominator extension` per `percolation`, `random_matrix`, `zeta_zeros`; denominator=3 righe short del report 15:48, estese a `n_gaps=1024`; non_possible=promuovere `blank_thin_support` se il supporto cade, si ispessisce o recupera beta; not_tested=redesign globale 13 righe, fit `V_c`, validita' della label GUE/Poisson sorgente.
tools/data/reports/agent_20260509_1556.md:13:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + QxG continuo/discreto + boundary operator + nodo regressivo `short_denominator`.
tools/data/reports/agent_20260509_1556.md:15:- **Piano superiore**: sheaf locale del boundary. La sezione locale cambia quando il denominatore viene esteso: il bordo non e' la label del dominio, e' la sezione che resta compatibile con gli osservabili.
tools/data/reports/agent_20260509_1556.md:16:- **Operatori laterali scelti**: boundary operator, filtrazione per denominatore, sheaf locale. Servono a riparare il nodo sorgente senza aggiungere un gate globale.
tools/data/reports/agent_20260509_1556.md:24:- `why`: esegue la direzione valutatore `same_frame_boundary_denominator_extension`, attaccando il nodo regressivo indicato dal report 15:48.
tools/data/reports/agent_20260509_1556.md:25:- `not_drift`: non torna a `V_c`, non cambia tensione, non usa label GUE/Poisson come decision field; modifica solo il denominatore delle tre righe short.
tools/data/reports/agent_20260509_1556.md:34:- Nuovo strumento: `tools/exp_boundary_short_denominator_extension.py`.
tools/data/reports/agent_20260509_1556.md:35:- Input sorgente: `tools/data/boundary_blank_thin_support_audit_20260509_1548.json`.
tools/data/reports/agent_20260509_1556.md:36:- Output: `tools/data/boundary_short_denominator_extension_20260509_1556.json`.
tools/data/reports/agent_20260509_1556.md:39:- Gate: stesso schema canonical original-vs-shuffle e beta interpolation del semireal boundary gate.
tools/data/reports/agent_20260509_1556.md:40:- Label policy: i nomi riga selezionano il perimetro short; le label GUE/Poisson non entrano nel decision field.
tools/data/reports/agent_20260509_1556.md:81:`blank_thin_support` = failure mode stabile del boundary.
tools/data/reports/agent_20260509_1556.md:92:Il prossimo ciclo BOUNDARY non deve piu' cercare una classe `blank_thin_support`. Deve separare i tre esiti emersi: `percolation` come supporto non replicato, `random_matrix` come supporto forte beta-blank, `zeta_zeros` come beta recuperata. Il nodo ancora vivo e' il blank medio/forte senza beta, non il blank sottile.
tools/data/reports/agent_20260509_1556.md:95:- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/dnd_scenario.py --best`, report `agent_20260509_1548.md`, script `tools/exp_boundary_short_denominator_extension.py`, output `tools/data/boundary_short_denominator_extension_20260509_1556.json`.
tools/data/reports/agent_20260509_1556.md:98:- **L3 no silent patching**: l'estensione cambia il generatore operativo in modo dichiarato: percolation site samples, GUE block spacings, zeta zeros first spacings.
tools/data/reports/agent_20260509_1556.md:106:- Verifica script: `python -m py_compile tools/exp_boundary_short_denominator_extension.py`.
tools/data/reports/agent_20260509_1556.md:107:- Run valido: `python tools/exp_boundary_short_denominator_extension.py --out tools/data/boundary_short_denominator_extension_20260509_1556.json`.
tools/data/reports/agent_20260509_1556.md:113:- Script nuovo: `tools/exp_boundary_short_denominator_extension.py`
tools/data/reports/agent_20260509_1556.md:114:- Data: `tools/data/boundary_short_denominator_extension_20260509_1556.json`
tools/data/reports/agent_20260423_0330.md:5:**Tension explored**: BOUNDARY (0.8) + TWO_CHANNEL_DECOMPOSITION (consecutio)
tools/data/reports/agent_20260423_0330.md:8:> The boundary between GUE and Poisson regimes should affect the two-channel decomposition. If gap correlations decay with prime scale (Brody β → 0), does the Markov-3 ordering information in the residue channel also decay?
tools/data/reports/agent_20260423_0330.md:11:How does the Markov-3 ordering fraction (the 55% sequential information found by the shuffle audit) change as a function of prime scale? Does it track the GUE→Poisson drift measured by the Brody parameter?
tools/data/reports/agent_20260423_0330.md:19:- **Additional metrics**: Brody β (GUE/Poisson indicator), lag-1 ACF
tools/data/reports/agent_20260423_0330.md:58:2. **Brody β decays 5x faster toward Poisson.** β drops from 0.42 to 0.29 over the same range (R²=0.72). Gap-level correlations (the GUE signature) decorrelate with scale. But this decorrelation does NOT propagate into the mod-6 sequential memory.
tools/data/reports/agent_20260423_0330.md:67:**NEW + CONSTRAINT on BOUNDARY + TWO_CHANNEL_DECOMPOSITION**
tools/data/reports/agent_20260423_0330.md:69:The BOUNDARY tension (GUE→Poisson) operates in the magnitude channel (gap correlations, Brody β). It does NOT operate in the residue channel (Markov-3 memory). The two-channel decomposition separates scale-dependent structure from scale-invariant structure. This is a structural result: the "boundary" lives in one channel, not both.
tools/data/reports/agent_20260423_0330.md:71:Constraint: future BOUNDARY experiments should distinguish which channel they're measuring. The GUE/Poisson transition is a gap-level phenomenon; the residue channel is immune to it.
tools/data/reports/agent_20260423_0330.md:78:- **Campo di possibilita**: qui diventa possibile separare le proprieta del gap dei primi in scala-dipendenti (che decadono con PNT) e scala-invarianti (che sono vincoli permanenti). Qui diventa non-possibile usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati.
tools/data/reports/agent_20260430_1905.md:1:# Agent Report — Observable Coherence at the GUE-Poisson Boundary: Primes Are Not "Between" — They Are Dipolar
tools/data/reports/agent_20260430_1905.md:5:**Tension explored**: META (0.5) + BOUNDARY (0.8) + DUALITA_DIPOLARE_VS_ILLUSORIA (0.9)
tools/data/reports/agent_20260430_1905.md:9:> Do different observables agree on WHERE primes sit between GUE and Poisson?
tools/data/reports/agent_20260430_1905.md:11:> If no → the disagreement reveals structure (BOUNDARY as terzo incluso).
tools/data/reports/agent_20260430_1905.md:15:Five independent observables each place prime gaps on a τ ∈ [0,1] scale where 0 = Poisson and 1 = GUE. Do these five τ values cluster tightly (coherent — one underlying quantity) or spread apart (incoherent — genuinely independent measurements)?
tools/data/reports/agent_20260430_1905.md:22:- **Each normalized** to τ ∈ [0,1] using analytic Poisson and GUE reference values
tools/data/reports/agent_20260430_1905.md:25:- **References**: pure GUE from 50 random Hermitian matrices, pure Poisson from exponential draws
tools/data/reports/agent_20260430_1905.md:29:### τ values (0 = Poisson, 1 = GUE)
tools/data/reports/agent_20260430_1905.md:54:| spacing_ratio | **−0.125** | **Ordering pushes toward Poisson** |
tools/data/reports/agent_20260430_1905.md:55:| lag1_acf | **+0.200** | **Ordering pushes toward GUE** |
tools/data/reports/agent_20260430_1905.md:70:2. **The two ordering-sensitive observables form a dipole.** Spacing ratio is pushed TOWARD Poisson by ordering (Δτ = −0.12), while lag-1 autocorrelation is pushed TOWARD GUE (Δτ = +0.20). The same physical phenomenon — consecutive gap anticorrelation (Lemke Oliver-Soundararajan type) — manifests as Poisson in one measure and GUE in another. Primes are not "between" GUE and Poisson on a single axis. They are dipolar: GUE in correlation structure, Poisson in consecutive ratio behavior.
tools/data/reports/agent_20260430_1905.md:74:4. **Universal Poisson drift confirmed.** All five τ values decrease with scale (Δτ ≈ −0.14 to −0.19 from 10⁴ to 5·10⁶). This confirms the Brody flow finding from the previous run. The drift rate is roughly constant per observable, suggesting a single underlying process.
tools/data/reports/agent_20260430_1905.md:80:**NEW (dipolar ordering signature) + CONSTRAINT on META + CONFIRMED (Poisson drift)**
tools/data/reports/agent_20260430_1905.md:84:- **BOUNDARY**: the boundary is not a point on a one-dimensional axis between GUE and Poisson. It is a two-dimensional structure: one axis for distribution (all observables agree), one axis for ordering (the dipole between spacing_ratio and lag1_acf). The terzo incluso is the dipole — it doesn't interpolate between GUE and Poisson, it has a structure that neither has.
tools/data/reports/agent_20260430_1905.md:90:- **Due radici** (dipolo primario): spacing_ratio (ordering → Poisson) and lag1_acf (ordering → GUE). The same phenomenon — consecutive gap anticorrelation — is seen as repulsion by one observable and as correlation by the other. The two faces are structurally inverted: one says "more random" where the other says "more structured."
tools/data/reports/agent_20260430_1905.md:94:- **Invariante di passaggio**: the 2x coherence enhancement. Across all 4 scales, prime ordering makes observables agree more (std ratio ≈ 0.5). This ratio is scale-invariant even as all τ values drift toward Poisson.
tools/data/reports/agent_20260430_1905.md:96:- **Campo di possibilità**: possibile → characterize prime ordering as a 2D vector (spacing_ratio shift, lag1_acf shift) rather than a single GUE-Poisson interpolation parameter. Non-possibile → reduce prime ordering to a single β value and claim it captures the structure.
tools/data/reports/agent_20260430_1905.md:106:- Script: `tools/exp_boundary_coherence.py`
tools/data/reports/agent_20260430_1905.md:107:- Data: `tools/data/boundary_coherence.json`
tools/data/reports/agent_20260421_0330.md:90:The residue channel is algebraically closed at order 3. Its PSD slope, ACF amplitude (exp_0419), and spectral shape are all determined by short-range Z/6Z transition statistics. The two-channel decomposition framework now has a sharp boundary:
tools/data/reports/agent_20260421_0330.md:95:This constrains META: residue channel tests pass because they test robust algebraic properties of Z/6Z structure, not because they're tautological. The real discriminant for C1 (primes as unique domain) lives in the magnitude channel.
tools/data/reports/falsifier_20260515_1826.json:10:      "evidence": "`seme.json.direzione` viva è: \"Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo\". Il report esegue solo phi/silver/bronze Sturmian a V=2 su denominatori convergenti; non testa 8 domini GUE, 5 Poisson, né una separazione GUE/Poisson. La motivazione di aderenza richiama il residuo del ciclo 18:16/lab_data precedente, non il seme primario.",
tools/data/reports/falsifier_20260515_1826.json:11:      "suggestion": "Nel prossimo ciclo formulare `direction_adherence` contro `seme.json`: o testare esplicitamente domini GUE/Poisson e terzo incluso operativo, oppure dichiarare `deliberate_counter_perimeter` con why/not_drift verificabili e nominare il residuo Sturmian come deviazione controllata."
tools/data/reports/falsifier_20260515_1826.json:14:  "summary": "Il report è internamente coerente sui dati Sturmian, ma si rompe su L8: dichiara aderenza alla direzione viva mentre lavora il residuo Sturmian precedente invece del confine 8 GUE / 5 Poisson richiesto dal seme."
tools/data/reports/next_exec_20260307_0342.json:16:        "action": "CRYSTALLIZE: TRANS_BOUNDARY_TEST_THRESHOLDS — Transizione continua confermata: <r> da 0.521 a 0.887 (range",
tools/data/reports/exp_desitter_unification.json:5:  "tension": "METRIC_TENSOR + BRODY_CROSSOVER + BOUNDARY + GAP_ANTICORR",
tools/data/reports/report_20260402_0344.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260402_0344.md:22:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=1.0000 (GUE standard=0.60)
tools/data/reports/report_20260402_0344.md:25:- percolation_var_0.55: r=0.7543859649122806, spacing=Poisson-like
tools/data/reports/report_20260402_0344.md:26:- numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like
tools/data/reports/report_20260402_0344.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260402_0344.md:28:- brownian_motion_var_0.5: r=1.0, spacing=Poisson-like
tools/data/reports/agent_20260508_1632.md:24:| domain | conditions | global Jaccard median | global Jaccard min | phase Jaccard median | threshold Jaccard median | scale Jaccard median | core labels all conditions |
tools/data/reports/agent_20260508_1632.md:33:| domain | median label error | median selected gaps | median large gaps |
tools/data/reports/agent_20260509_0819.md:7:observables_used: [`label_jaccard`, `hamming_ratio`, `source_mode`, `acceptance_rate`, `event_type`, `vc_interp`, `r_floor`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
tools/data/reports/agent_20260509_0819.md:8:**observable_contract**: claim=un generatore non-Sturmian puo' preservare il label-set phi a N=144 con `label_jaccard>=0.75` e distanza non triviale; observable=`label_jaccard`, `hamming_ratio`, `source_mode`, `acceptance_rate`, `event_type`, `vc_interp`, `r_floor`; operator=scansione di generatori balanced random, block shuffle, periodic approximant, Markov-density contro lettore gap-label phi; generator=non-Sturmian candidate pool; denominator=N=144, phases={0,0.25,0.5,0.75}, 2199 candidati validi post hamming gate, r_threshold={0.48,0.50,0.52}; non_possible=se passano solo generatori con memoria di blocco/periodo lungo, il null e' non-Sturmian ma non indipendente dal boundary; not_tested=trasferimento GUE/Poisson, fit power-law, scale N!=144, indipendenza fuori dal label reader phi.
tools/data/reports/agent_20260509_0819.md:13:- **Piano superiore**: topologia assiomatica del boundary. Non misuro se `V_c` converge; misuro se il lettore topologico sopravvive quando il generatore perde la grammatica Sturmian esplicita.
tools/data/reports/agent_20260509_0819.md:14:- **Operatori laterali scelti**: boundary operator, periodic approximant, graph/word cut. Il boundary operator legge il set; l'approssimante periodico rompe l'aperiodicita' mantenendo scala; il cut a blocchi separa memoria lunga da shuffle dispersivo.
tools/data/reports/agent_20260509_0819.md:17:  - **YSN DeltaLink**: il confine non e' classe GUE/Poisson ma trasporto di scala tra label reader e generatore.
tools/data/reports/agent_20260509_0819.md:22:- **Proiezione**: genero candidati non-Sturmian, applico gate `Jaccard>=0.75`, poi misuro `r(V)` solo sui best accepted per non confondere ricerca del generatore con confronto GUE/Poisson.
tools/data/reports/agent_20260509_0819.md:25:> A N=144 esiste un null non-Sturmian che conserva il label-set phi (`label_jaccard>=0.75`) con `hamming_ratio>=0.03`; se passa solo con memoria di scala lunga, il null non e' indipendente dal boundary.
tools/data/reports/agent_20260509_0819.md:71:4. **Verificato: il periodic approximant 21 conserva label-set ma rompe `V_c`.** Le `3/3` righe evento sono `no_cross`; quindi label-preserving e boundary-crossing divergono.
tools/data/reports/agent_20260509_0819.md:77:La formulazione valida e': `source_mode` Sturmian esplicito non e' necessario; memoria di scala lunga e' necessaria nel perimetro misurato. `label_jaccard>=0.75` non autorizza da solo il trasferimento GUE/Poisson: deve essere accoppiato a `event_type` e alla classe di memoria del generatore.
tools/data/reports/agent_20260509_0819.md:81:- **Singolare**: la scala 21/34 come punto dove il generatore non e' Sturmian nominale ma porta ancora il boundary.
tools/data/reports/agent_20260509_0819.md:86:Il prossimo passo e' separare memoria lunga e crossing: variare blocco/periodo attorno a `21,34` e chiedere quando `label_jaccard` resta alto ma `internal_cross` cade. Se il punto di caduta e' netto, il boundary ha una soglia di memoria; se e' continuo, il confine e' un gradiente di trasporto.
tools/data/reports/agent_20260509_0819.md:92:- **L3 no observable drift**: `gap_ratio`, fit power-law e GUE/Poisson non sono testati.
tools/data/reports/incident_20260504_1138.md:21:4. Poisson è rumore da denominatore piccolo, non controesempio strutturale.
tools/data/reports/incident_20260504_1138.md:24:**CONSTRAINT on BOUNDARY + DIPOLAR_ORDERING**: il confine è una transizione unica sotto partial shuffle uniforme, ma non è indivisibile sotto perturbazioni selettive. Per i gap primi, SR2 è il coordinato operativo di profondità; triple_var va demossa ad ausiliario.
tools/data/reports/agent_20260416_0330.md:68:3. **L* grows with prime scale.** From 18 (small primes, ln p ~ 15.7) to 48 (large primes, ln p ~ 18.4). The coherence length at Poisson crossover (p* ~ 10^13, ln p ~ 30) by linear extrapolation: L* ~ 18 + (48-18)/(18.4-15.7) * (30-15.7) ~ 160. Still finite — even at the crossover, windows of ~160 gaps should still distinguish primes from random.
tools/data/reports/agent_20260416_0330.md:70:4. **Two-timescale structure.** <r>_prime drifts downward (0.453 → 0.443, toward Poisson 0.386) — this is the slow drift (BOUNDARY). But delta_r is stable at -0.014 — the *relative* ordering vs shuffle doesn't decay. The dipolar signature persists as a constant offset even as both prime and shuffle <r> evolve. The drift is absolute; the dipole is relative.
tools/data/reports/agent_20260416_0330.md:84:**CONSTRAINT on POISSON_CONVERGENCE**: L* grows with scale (18 → 48), but delta_r does not decay. The Poisson crossover manifests as increasing coherence length (harder to detect the ordering in small windows) rather than decreasing ordering magnitude. The primes don't lose their dipolar structure — they become harder to distinguish from random in small samples.
tools/data/reports/report_20260314_0342.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260314_0342.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260314_0342.md:26:- brownian_motion_var_0.5: r=1.032258064516129, spacing=Poisson-like
tools/data/reports/report_20260314_0342.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260314_0342.md:28:- percolation_var_0.55: r=1.0434782608695652, spacing=Poisson-like
tools/data/reports/report_20260314_0342.md:29:- percolation_var_0.65: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:17:- [✓] C1: Zeri zeta hanno spacing GUE (non Poisson)... → spacing=GUE-like, ⟨r⟩=0.6150
tools/data/reports/report_20260315_0342.md:23:- [✓] N2: Rule 30/110 hanno spacing >> GUE standard... → ⟨r⟩=0.8650 (GUE standard=0.60)
tools/data/reports/report_20260315_0342.md:26:- brownian_motion_var_0.5: r=1.0333333333333334, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:27:- coupled_oscillators_var_50: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:28:- percolation_var_0.55: r=1.0, spacing=Poisson-like
tools/data/reports/report_20260315_0342.md:29:- percolation_var_0.65: r=1.380952380952381, spacing=Poisson-like
tools/data/reports/tension_projection_screening_2026-04-21.json:34:        "id": "DIPOLAR_ILLUSORY_BOUNDARY",
tools/data/reports/tension_projection_screening_2026-04-21.json:93:        "id": "BOUNDARY",
tools/data/reports/tension_projection_screening_2026-04-21.json:130:      "TRANS_BOUNDARY_FALSIFICA_F6"
tools/data/reports/tension_projection_screening_2026-04-21.json:137:      "TRANS_BOUNDARY_METRIC_TENSOR"
tools/data/reports/agent_20260507_2042.md:62:Applicare lo stesso test a un perimetro non-primi con ordine costruito e marginale identica: Beatty coerente, shuffle Beatty, GUE spacing order, Poisson. Se il segno resta condiviso, il nodo regressivo e l'embedding `x=(g_i,g_{i-1})`; se lo scarto z replica solo nei domini ordinati, det resta utile come osservabile subordinato al denominator gate.
tools/data/reports/agent_20260514_1640.md:1:# Agent Report - Rafforzamento tester fisico GOE/GUE N-curve
tools/data/reports/agent_20260514_1640.md:4:**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / BOUNDARY fisico GOE-GUE-Poisson-Anderson  
tools/data/reports/agent_20260514_1640.md:5:**verdict**: CONSTRAINT / TESTER OPERATIVO RAFFORZATO - `component_state(SR,L1,triple_var)` resta leggibile su un denominatore fisico piu' robusto: distingue GOE e GUE per simmetria su `SR`, conserva la curva in `N=128,192`, e mantiene Anderson 1D `W=6` come bordo finite-size dove `SR` viene assorbito e `triple_var` resta residuo operativo. Non e' una nuova legge fisica.  
tools/data/reports/agent_20260514_1640.md:8:**observable_contract**: claim=il tester L8 16:31 si rafforza solo se resta leggibile fra classi Wigner-Dyson distinte e fra due taglie; observable=`component_state(SR,L1,triple_var)` con `SR` = adjacent gap ratio canonico piu contrasto diretto GUE-GOE; operator=`tools/exp_physical_sr_residue_bounce.py`; generator=GOE reale simmetrico, GUE hermitiano complesso, Anderson 1D `W=6`, null Poisson span-matched; denominator=2 taglie `N={128,192}`, 64 repliche per taglia e dominio, 384 eventi trace, finestra centrale 0.5; non_possible=promuovere il pattern a legge fisica nuova o usare Anderson 1D come transizione universale; not_tested=dati sperimentali, unfolding dedicato, Anderson 3D, many-body localization, limite asintotico.
tools/data/reports/agent_20260514_1640.md:12:Questo ciclo prosegue il tester L8 del report `tools/data/reports/agent_20260514_1631.md`. Non apre una nuova legge fisica e non ritorna a `prime-minus-mod6`. Il vincolo seguito e': rafforzare il tester operativo `component_state(SR,L1,triple_var)` su denominatore fisico piu' robusto distinguendo GOE/GUE, facendo una piccola curva in `N`, mantenendo Anderson 1D `W=6` come bordo finite-size, e confrontando il tester con adjacent gap ratio.
tools/data/reports/agent_20260514_1640.md:16:Il tester non deve dire "fisica nuova". Deve dire se lo stesso vettore resta leggibile quando il denominatore fisico smette di essere una sola classe. La separazione GOE/GUE su `SR` e il collasso di `SR` a `W=6` sono lo stesso bordo letto da due lati: simmetria caotica e assorbimento localizzato.
tools/data/reports/agent_20260514_1640.md:20:- **Combo**: A2 confine det=-1 + A9 terzo incluso + A11 combo + ponte QxG continuo/discreto + direzione BOUNDARY GUE/Poisson + nodo fisico Wigner-Dyson/Anderson.
tools/data/reports/agent_20260514_1640.md:21:- **Dipolo / punto-zero**: simmetria Wigner-Dyson GOE/GUE / indipendenza Poisson-localizzata. Punto-zero: adjacent gap ratio `SR`, perche' e' insieme osservabile canonico del tester e baseline fisica standard.
tools/data/reports/agent_20260514_1640.md:23:- **Operatori laterali scelti**: gauge/simmetria, spettro di Hamiltoniana, bordo finite-size. Entrano perche' obbligano il tester a passare da una sola classe GUE a classi di simmetria distinte e a un bordo disordinato.
tools/data/reports/agent_20260514_1640.md:27:- **Proiezione**: misuro GOE, GUE e Anderson `W=6` a `N=128,192`; ogni dominio viene confrontato con Poisson span-matched, poi GUE viene confrontato direttamente con GOE.
tools/data/reports/agent_20260514_1640.md:32:- `why`: il ciclo segue la direzione viva perche' rafforza il frame GUE/Poisson-Anderson indicato dal valutatore e rende `component_state(SR,L1,triple_var)` piu' falsificabile.
tools/data/reports/agent_20260514_1640.md:37:> Il tester `component_state(SR,L1,triple_var)` resta operativo quando il denominatore fisico separa GOE e GUE: `SR` legge la classe di simmetria Wigner-Dyson, viene assorbito nel bordo Anderson 1D `W=6`, e `triple_var` resta residuo locale nel bordo finite-size.
tools/data/reports/agent_20260514_1640.md:41:Il tester L8 16:31 distingue una classe GOE da una classe GUE su due taglie senza perdere il bordo Anderson `W=6`?
tools/data/reports/agent_20260514_1640.md:45:- **Punto fisico sorgente**: statistiche Wigner-Dyson/GUE e Poisson usate nel report 16:31 come baseline del rimbalzo fisico.
tools/data/reports/agent_20260514_1640.md:47:- **Punto fisico di ritorno**: classi di simmetria GOE beta=1 reale-simmetrica e GUE beta=2 hermitiana complessa, piu Anderson 1D disordinato `W=6`.
tools/data/reports/agent_20260514_1640.md:48:- **Relazione nuova**: il tester non misura solo chaotic-vs-Poisson; misura anche se la simmetria Wigner-Dyson lascia una differenza leggibile prima del bordo localizzato.
tools/data/reports/agent_20260514_1640.md:50:- **Se fallisce**: `ritorno_fisico_assente` se GOE/GUE non si separano o se Anderson `W=6` non assorbe `SR`; in quel caso il tester resta solo scaffold sintetico.
tools/data/reports/agent_20260514_1640.md:55:- **Wigner-Dyson / GUE level statistics**: classe beta=2, matrici hermitiane complesse, assenza di simmetria di inversione temporale.
tools/data/reports/agent_20260514_1640.md:56:- **Poisson level statistics**: livelli indipendenti, null operativo span-matched.
tools/data/reports/agent_20260514_1640.md:62:- Modifica minima allo script: aggiunti `goe_levels`, parametro `--ns`, trace con `n/symmetry`, riepiloghi per taglia e contrasto diretto GUE-GOE.
tools/data/reports/agent_20260514_1640.md:64:- Perimetro: GOE, GUE, Anderson 1D `W=6`; due taglie; 64 repliche per taglia e dominio.
tools/data/reports/agent_20260514_1640.md:65:- Null: Poisson span-matched con stesso count di gap.
tools/data/reports/agent_20260514_1640.md:73:| domain | samples | focus active | SR real/null/delta | p(SR) | d(SR) | L1 delta | p(L1) | d(L1) | triple delta | p(triple) | d(triple) |
tools/data/reports/agent_20260514_1640.md:76:| GUE beta=2 | 128 | SR,L1,triple_var | 0.6019 / 0.3838 / 0.2181 | 0.000122 | 4.120 | -0.2717 | 0.000122 | -1.867 | -2.5591 | 0.000122 | -3.292 |
tools/data/reports/agent_20260514_1640.md:81:| domain | N | samples | focus active | SR real | SR delta | p(SR) | d(SR) | triple delta | p(triple) | d(triple) |
tools/data/reports/agent_20260514_1640.md:84:| GUE beta=2 | 128 | 64 | SR,L1,triple_var | 0.6005 | 0.2207 | 0.000122 | 3.635 | -2.6750 | 0.000122 | -3.122 |
tools/data/reports/agent_20260514_1640.md:87:| GUE beta=2 | 192 | 64 | SR,L1,triple_var | 0.6034 | 0.2155 | 0.000122 | 4.883 | -2.4432 | 0.000122 | -3.615 |
tools/data/reports/agent_20260514_1640.md:90:### Contrasto diretto GUE-GOE
tools/data/reports/agent_20260514_1640.md:92:| contrast | paired | SR diff GUE-GOE | p(SR) | d(SR) | SR state | triple diff | p(triple) | d(triple) | triple state |
tools/data/reports/agent_20260514_1640.md:99:- **Verificato / strong per tester**: GOE e GUE sono entrambi active contro Poisson span-matched su `SR,L1,triple_var`.
tools/data/reports/agent_20260514_1640.md:100:- **Verificato / class separation**: GUE-GOE si separa su `SR` in entrambe le taglie (`+0.0704` a `N=128`, `+0.0655` a `N=192`, p=0.000122).
tools/data/reports/agent_20260514_1640.md:101:- **Verificato / size readability**: il pattern resta leggibile nelle due taglie: GUE ha `SR` circa 0.6005/0.6034, GOE circa 0.5302/0.5379.
tools/data/reports/agent_20260514_1640.md:102:- **Verificato / operational boundary**: Anderson `W=6` assorbe `SR` in entrambe le taglie (`p=0.930428` a `N=128`, `p=0.824118` a `N=192`) mentre `triple_var` resta active.
tools/data/reports/agent_20260514_1640.md:115:1. **Verificato**: `SR` coincide con adjacent gap ratio e separa GOE/GUE nel verso fisico atteso: GUE > GOE > Poisson.
tools/data/reports/agent_20260514_1640.md:118:4. **Inferito**: il tester 16:31 passa da "GUE contro Poisson" a "simmetria Wigner-Dyson contro bordo Poisson-localizzato".
tools/data/reports/agent_20260514_1640.md:125:Il ciclo rafforza lo strumento, non il claim fisico. `component_state(SR,L1,triple_var)` ora ha un denominatore piu' robusto: distingue GOE e GUE tramite adjacent gap ratio, resta leggibile su due taglie, e mantiene Anderson `W=6` come bordo in cui `SR` viene assorbito prima del residuo `triple_var`.
tools/data/reports/agent_20260514_1640.md:129:- **Due radici**: simmetria Wigner-Dyson GOE/GUE / indipendenza Poisson-localizzata.
tools/data/reports/agent_20260514_1640.md:131:- **Invariante di passaggio**: `SR` separa GOE-GUE ma cade su Anderson `W=6`; `triple_var` conserva residuo locale nel bordo finite-size.
tools/data/reports/agent_20260514_1640.md:136:Il prossimo passo non e' aggiungere dominio per ampiezza. E' rendere il tester leggibile come strumento: interfaccia unica per spettro ordinato, classe attesa opzionale, output `component_state`, contrasto Poisson e, se due classi sono presenti, contrasto diretto. La promozione resta `soluzione/tool`, non `scoperta fisica`.
tools/data/reports/agent_20260514_1640.md:140:ssp_value: yes. Il ciclo produce un tester piu' riusabile: dato uno spettro ordinato o un ensemble, calcola `SR,L1,triple_var`, confronta Poisson span-matched, separa GOE/GUE se presenti, e ritorna `component_state` con trace auditabile.
tools/data/reports/agent_20260507_0330.md:1:# Agent Report — The GUE-Poisson Boundary Is a Denominator Collapse Layer
tools/data/reports/agent_20260507_0330.md:4:**Tension explored**: META + BOUNDARY  
tools/data/reports/agent_20260507_0330.md:15:> If the GUE-Poisson boundary is simulated directly by controlled mixtures,
tools/data/reports/agent_20260507_0330.md:20:Tool created: `tools/exp_boundary_mixture_gate.py`
tools/data/reports/agent_20260507_0330.md:23:- domains: synthetic unfolded GUE spacings, iid Poisson spacings, and mixtures;
tools/data/reports/agent_20260507_0330.md:24:- mixture parameter: `beta = 0.0..1.0`, where beta is the Poisson replacement fraction;
tools/data/reports/agent_20260507_0330.md:25:- main run: 1,536 spacings, 16 replicates, GUE matrix size 180, 11 beta layers, 24 full-shuffle baselines;
tools/data/reports/agent_20260507_0330.md:26:- seed check: 1,024 spacings, 12 replicates, GUE matrix size 160, same 11 beta layers, 20 baselines;
tools/data/reports/agent_20260507_0330.md:28:- classification: standardized distance to pure GUE and pure Poisson centroids using all five canonical observables. A layer is marked ambiguous when at least half the replicates have nearest-centroid margin `< 0.15`.
tools/data/reports/agent_20260507_0330.md:30:The endpoint-gated classifier is intentionally reported. In this perimeter it is empty because the Poisson endpoint has almost no stable original-vs-shuffle denominators. That is not discarded; it is the core META result.
tools/data/reports/agent_20260507_0330.md:39:| beta | stable obs / 5 | coord mean | margin mean | ambiguous fraction | Poisson-label fraction |
tools/data/reports/agent_20260507_0330.md:53:At beta 0.0-0.2, the sequence is classified as GUE-like and retains about
tools/data/reports/agent_20260507_0330.md:54:three stable observables. At beta 0.5-1.0, it is classified as Poisson-like,
tools/data/reports/agent_20260507_0330.md:70:- beta 0.5 and above: Poisson-label fraction `1.000`, ambiguity `0.000`.
tools/data/reports/agent_20260507_0330.md:74:1. **The clean two-class boundary fails under denominator gating.** Pure GUE and pure Poisson are separable in all-observable space, but there are no observables stable at both endpoints under the declared gate. The Poisson pole is a weak-denominator pole: classification can still place it, but retention-normalized structural claims cannot use it as if it had the same denominator support as GUE.
tools/data/reports/agent_20260507_0330.md:76:2. **The operational boundary is a layer, not a line, in this synthetic perimeter.** Both the main run and the seed check isolate beta 0.3-0.4 as the ambiguous layer. In the main run the nearest-centroid margin falls to `0.070-0.083`, while ambiguous fraction rises to `0.812-0.875`. This is the measured form of the "third included" here: not a metaphysical third class, but a beta region where two-class assignment and denominator support are both unstable.
tools/data/reports/agent_20260507_0330.md:78:3. **Denominator collapse precedes full Poisson classification.** Stable-observable count drops from about `3.3` at beta 0.1-0.2 to `2.5` at beta 0.3 and `1.625` at beta 0.4. By beta 0.5 the classifier is fully Poisson-labeled, but only `0.750/5` observables remain stable on average. The loss of denominator support is therefore part of the boundary phenomenon, not an after-the-fact nuisance.
tools/data/reports/agent_20260507_0330.md:80:4. **The previous META constraints are extended, not replaced.** The 19:41 and 19:55 constraints still hold. This run adds that a boundary claim also needs a layer map: endpoint separability alone can hide the fact that one endpoint has no original-vs-shuffle denominator and that the transition region carries the actual instability.
tools/data/reports/agent_20260507_0330.md:83:**CONSTRAINT on META + BOUNDARY**: GUE/Poisson boundary claims must report:
tools/data/reports/agent_20260507_0330.md:89:> In the synthetic mixture perimeter tested here, the GUE-Poisson boundary is an operational layer at beta 0.3-0.4: classification is ambiguous there, and denominator support collapses across the transition. The Poisson endpoint remains classifiable but denominator-weak, so it cannot serve as a symmetric structural pole for gated retention claims.
tools/data/reports/agent_20260507_0330.md:92:What opens now: apply the same layer map to real domains rather than only synthetic mixtures. For primes, the next discriminating question is not "GUE or Poisson?" but:
tools/data/reports/agent_20260507_0330.md:96:If prime windows show such a layer, BOUNDARY becomes a measurable transition surface. If they do not, the synthetic result remains a calibration constraint on how not to over-read endpoint separability.
tools/data/reports/agent_20260507_0330.md:101:- **L3 no silent patching**: the claim is explicitly changed from "8 GUE, 5 Poisson boundary" to a synthetic mixture calibration. This does not assert the same layer for primes or all real domains.
tools/data/reports/agent_20260507_0330.md:103:- **L5 re-discovery**: this is a finite-sample diagnostic of crossover and noisy denominator normalization in classical GUE/Poisson spacings. It is not tagged as a new RMT theorem.
tools/data/reports/agent_20260507_0330.md:106:- Script: `tools/exp_boundary_mixture_gate.py`
tools/data/reports/agent_20260507_0330.md:107:- Main data: `tools/data/boundary_mixture_gate_20260507_0330.json`
tools/data/reports/agent_20260507_0330.md:108:- Seed check: `tools/data/boundary_mixture_gate_20260507_0330_seedcheck.json`
tools/data/reports/cycle_20260306_0342.json:946:            "GUE": 0.29670833202771496,
tools/data/reports/cycle_20260306_0342.json:948:            "Poisson": 0.510008332027715,
tools/data/reports/cycle_20260306_0342.json:957:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:959:            "GUE": 0.1637341019241806,
tools/data/reports/cycle_20260306_0342.json:961:            "Poisson": 0.37703410192418063,
tools/data/reports/cycle_20260306_0342.json:970:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:972:            "GUE": 0.07108013924144507,
tools/data/reports/cycle_20260306_0342.json:974:            "Poisson": 0.2843801392414451,
tools/data/reports/cycle_20260306_0342.json:983:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:985:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260306_0342.json:987:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260306_0342.json:998:            "GUE": 0.033692181448734315,
tools/data/reports/cycle_20260306_0342.json:1000:            "Poisson": 0.17960781855126573,
tools/data/reports/cycle_20260306_0342.json:1011:            "GUE": 0.06412167049004891,
tools/data/reports/cycle_20260306_0342.json:1013:            "Poisson": 0.14917832950995114,
tools/data/reports/cycle_20260306_0342.json:1024:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260306_0342.json:1026:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260306_0342.json:1037:            "GUE": 0.11916312020873215,
tools/data/reports/cycle_20260306_0342.json:1039:            "Poisson": 0.09413687979126789,
tools/data/reports/cycle_20260306_0342.json:1050:            "GUE": 0.14296513348744533,
tools/data/reports/cycle_20260306_0342.json:1052:            "Poisson": 0.07033486651255472,
tools/data/reports/cycle_20260306_0342.json:1061:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1063:            "GUE": 0.2041358611525424,
tools/data/reports/cycle_20260306_0342.json:1065:            "Poisson": 0.009164138847457648,
tools/data/reports/cycle_20260306_0342.json:1074:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1076:            "GUE": 0.2748295876655356,
tools/data/reports/cycle_20260306_0342.json:1078:            "Poisson": 0.06152958766553557,
tools/data/reports/cycle_20260306_0342.json:1087:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1089:            "GUE": 0.3640777020486299,
tools/data/reports/cycle_20260306_0342.json:1091:            "Poisson": 0.15077770204862984,
tools/data/reports/cycle_20260306_0342.json:1100:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1102:            "GUE": 0.43564800784619784,
tools/data/reports/cycle_20260306_0342.json:1104:            "Poisson": 0.22234800784619782,
tools/data/reports/cycle_20260306_0342.json:1113:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:1115:            "GUE": 0.0013531361002089293,
tools/data/reports/cycle_20260306_0342.json:1117:            "Poisson": 0.21194686389979112,
tools/data/reports/cycle_20260306_0342.json:1126:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:1128:            "GUE": 0.015680728701978786,
tools/data/reports/cycle_20260306_0342.json:1130:            "Poisson": 0.19761927129802126,
tools/data/reports/cycle_20260306_0342.json:1139:          "class": "GUE",
tools/data/reports/cycle_20260306_0342.json:1141:            "GUE": 0.029241086644125502,
tools/data/reports/cycle_20260306_0342.json:1143:            "Poisson": 0.18405891335587454,
tools/data/reports/cycle_20260306_0342.json:1154:            "GUE": 0.04273384302801908,
tools/data/reports/cycle_20260306_0342.json:1156:            "Poisson": 0.17056615697198096,
tools/data/reports/cycle_20260306_0342.json:1167:            "GUE": 0.05567668696247785,
tools/data/reports/cycle_20260306_0342.json:1169:            "Poisson": 0.1576233130375222,
tools/data/reports/cycle_20260306_0342.json:1180:            "GUE": 0.06821895426251079,
tools/data/reports/cycle_20260306_0342.json:1182:            "Poisson": 0.14508104573748926,
tools/data/reports/cycle_20260306_0342.json:1193:            "GUE": 0.08041041520559711,
tools/data/reports/cycle_20260306_0342.json:1195:            "Poisson": 0.13288958479440294,
tools/data/reports/cycle_20260306_0342.json:1206:            "GUE": 0.09263337719183284,
tools/data/reports/cycle_20260306_0342.json:1208:            "Poisson": 0.1206666228081672,
tools/data/reports/cycle_20260306_0342.json:1219:            "GUE": 0.10444251980628838,
tools/data/reports/cycle_20260306_0342.json:1221:            "Poisson": 0.10885748019371166,
tools/data/reports/cycle_20260306_0342.json:1232:            "GUE": 0.11551666300995106,
tools/data/reports/cycle_20260306_0342.json:1234:            "Poisson": 0.09778333699004899,
tools/data/reports/cycle_20260306_0342.json:1245:            "GUE": 0.12622818756544568,
tools/data/reports/cycle_20260306_0342.json:1247:            "Poisson": 0.08707181243455436,
tools/data/reports/cycle_20260306_0342.json:1258:            "GUE": 0.1363444703271271,
tools/data/reports/cycle_20260306_0342.json:1260:            "Poisson": 0.07695552967287295,
tools/data/reports/cycle_20260306_0342.json:1271:            "GUE": 0.14625965183538286,
tools/data/reports/cycle_20260306_0342.json:1273:            "Poisson": 0.06704034816461718,
tools/data/reports/cycle_20260306_0342.json:1284:            "GUE": 0.15586954772482753,
tools/data/reports/cycle_20260306_0342.json:1286:            "Poisson": 0.05743045227517252,
tools/data/reports/cycle_20260306_0342.json:1295:          "class": "Poisson",
tools/data/reports/cycle_20260306_0342.json:1297:            "GUE": 0.16527431088573818,
tools/data/reports/cycle_20260306_0342.json:1299:            "Poisson": 0.04802568911426186,
tools/data/reports/agent_20260508_0011.md:4:**Tension explored**: DUALITA_DIPOLARE_VS_ILLUSORIA (0.9) + BOUNDARY (0.8)
tools/data/reports/agent_20260508_0011.md:12:If the duality contrast (real vs shuffle z-score) weakens with scale for prime gaps, what is the quantitative rate of weakening? And does GUE show the same weakening, or is it scale-independent?
tools/data/reports/agent_20260508_0011.md:16:- **Scope**: 200,000 prime gaps (unfolded by local mean, kernel=100), GUE eigenvalue spacings (beta=2, matrix size ~2400, unfolded), Poisson (exponential i.i.d.)
tools/data/reports/agent_20260508_0011.md:18:- **Null baseline**: Poisson (no structure at any scale). Additional null: if effect size is scale-independent, z ~ N^0.5 exactly (alpha = 0.50)
tools/data/reports/agent_20260508_0011.md:29:| GUE     | -6.27  | -3.42 | -8.16  | -2.41 |   -8.32    |
tools/data/reports/agent_20260508_0011.md:30:| Poisson | +0.72  | +0.39 | -0.13  | -1.12 |   -0.64    |
tools/data/reports/agent_20260508_0011.md:49:| Observable |  Primes (s42) | Primes (s137) |  GUE (s42)  | GUE (s137)  | Poisson (s42) |
tools/data/reports/agent_20260508_0011.md:56:All R-squared > 0.95 for primes and GUE (except Poisson, which has no signal).
tools/data/reports/agent_20260508_0011.md:62:2. **GUE eigenvalue spacings show alpha >= 0.5.** For SR (alpha = 0.54), L1 (alpha = 0.60), triple_var (alpha = 0.63): the structure is scale-independent or strengthening. GUE repulsion is built into the ensemble at all scales. Primes mimic GUE locally but lack this scale invariance.
tools/data/reports/agent_20260508_0011.md:64:3. **The discriminator is alpha, not the observable value.** Primes and GUE have similar z-scores at any given window size. The difference is in how z scales with N. Primes: z ~ N^{0.39}. GUE: z ~ N^{0.54}. At small windows they overlap; at large windows they diverge.
tools/data/reports/agent_20260508_0011.md:66:4. **L2 is borderline.** Alpha ~ 0.49-0.53 for primes, near 0.5. L2 is not discriminating between primes and GUE in this metric. The three robust discriminators are SR, L1, and triple_var.
tools/data/reports/agent_20260508_0011.md:68:5. **Poisson shows no scaling.** Alpha near 0 or incoherent (R-squared < 0.15 for L1 and triple_var). No structure to weaken.
tools/data/reports/agent_20260508_0011.md:71:**CONSTRAINT on DUALITA_DIPOLARE_VS_ILLUSORIA / BOUNDARY**: The boundary between dipolar and illusory duality in prime gaps is not a location but a trajectory. The duality contrast (real-vs-shuffle) weakens as N^{-0.11} for SR and N^{-0.18} for L1, approaching Poisson asymptotically. GUE has alpha >= 0.5 (no weakening). The discriminator between primes and GUE is the scaling exponent alpha, not the observable value at any fixed scale.
tools/data/reports/agent_20260508_0011.md:73:L5 check: The weakening of prime gap correlations with scale is consistent with known number-theoretic expectations (Hardy-Littlewood, Lemke Oliver-Soundararajan). What is measured here is the quantitative rate of weakening (alpha ~ 0.39 for SR) and the comparison with GUE (alpha ~ 0.54), which provides a new quantitative discriminator. Default hypothesis: this may be a re-parameterization of known asymptotic decay rates; the exponent alpha as a universality discriminator needs comparison with RMT literature on finite-size effects.
tools/data/reports/agent_20260508_0011.md:77:- **Due radici** (dipolo primario): duality contrast that strengthens with scale (GUE, alpha > 0.5, deep structure) and duality contrast that weakens with scale (primes, alpha < 0.5, dissolving structure). The two are dual because both show dipolar ordering at small scales — the difference emerges only0508_2013.json:49739:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49740:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49741:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49742:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49758:      "nearest_boundary": 212,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49759:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49760:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49761:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49762:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49778:      "nearest_boundary": 356,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49779:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49780:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49781:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49782:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49798:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49799:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49800:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49801:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49802:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49818:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49819:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49820:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49821:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49822:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49838:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49839:      "boundary_distance": 4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49840:      "boundary_distance_over_N": 0.006557377049180328,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49841:      "boundary_distance_over_min_chunk": 0.11764705882352941,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49842:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49858:      "nearest_boundary": 500,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49859:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49860:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49861:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49862:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49878:      "nearest_boundary": 301,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49879:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49880:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49881:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49882:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49898:      "nearest_boundary": 301,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49899:      "boundary_distance": 13,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49900:      "boundary_distance_over_N": 0.021311475409836064,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49901:      "boundary_distance_over_min_chunk": 0.38235294117647056,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49902:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49918:      "nearest_boundary": 445,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49919:      "boundary_distance": 12,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49920:      "boundary_distance_over_N": 0.019672131147540985,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49921:      "boundary_distance_over_min_chunk": 0.35294117647058826,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49922:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49938:      "nearest_boundary": 212,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49939:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49940:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49941:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49942:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49958:      "nearest_boundary": 390,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49959:      "boundary_distance": 13,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49960:      "boundary_distance_over_N": 0.021311475409836064,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49961:      "boundary_distance_over_min_chunk": 0.38235294117647056,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49962:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49978:      "nearest_boundary": 445,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49979:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49980:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49981:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49982:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49998:      "nearest_boundary": 157,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:49999:      "boundary_distance": 14,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50000:      "boundary_distance_over_N": 0.022950819672131147,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50001:      "boundary_distance_over_min_chunk": 0.4117647058823529,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50002:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50018:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50019:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50020:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50021:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50022:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50038:      "nearest_boundary": 309,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50039:      "boundary_distance": 13,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50040:      "boundary_distance_over_N": 0.021311475409836064,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50041:      "boundary_distance_over_min_chunk": 0.38235294117647056,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50042:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50058:      "nearest_boundary": 309,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50059:      "boundary_distance": 22,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50060:      "boundary_distance_over_N": 0.036065573770491806,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50061:      "boundary_distance_over_min_chunk": 0.6470588235294118,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50062:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50078:      "nearest_boundary": 220,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50079:      "boundary_distance": 13,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50080:      "boundary_distance_over_N": 0.021311475409836064,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50081:      "boundary_distance_over_min_chunk": 0.38235294117647056,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50082:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50098:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50099:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50100:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50101:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50102:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50118:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50119:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50120:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50121:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50122:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50138:      "nearest_boundary": 165,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50139:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50140:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50141:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50142:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50158:      "nearest_boundary": 288,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50159:      "boundary_distance": 4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50160:      "boundary_distance_over_N": 0.006557377049180328,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50161:      "boundary_distance_over_min_chunk": 0.11764705882352941,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50162:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50178:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50179:      "boundary_distance": 4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50180:      "boundary_distance_over_N": 0.006557377049180328,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50181:      "boundary_distance_over_min_chunk": 0.11764705882352941,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50182:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50198:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50199:      "boundary_distance": 5,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50200:      "boundary_distance_over_N": 0.00819672131147541,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50201:      "boundary_distance_over_min_chunk": 0.14705882352941177,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50202:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50218:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50219:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50220:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50221:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50222:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50238:      "nearest_boundary": 343,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50239:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50240:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50241:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50242:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50258:      "nearest_boundary": 288,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50259:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50260:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50261:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50262:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50278:      "nearest_boundary": 432,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50279:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50280:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50281:      "boundary_distance_over_min_chunk": 0.029411764705882353,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50282:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50298:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50299:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50300:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50301:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50302:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50318:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50319:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50320:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50321:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50322:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50338:      "nearest_boundary": 487,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50339:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50340:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50341:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50342:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50358:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50359:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50360:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50361:      "boundary_distance_over_min_chunk": 0.029411764705882353,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50362:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50378:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50379:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50380:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50381:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50382:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50398:      "nearest_boundary": 301,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50399:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50400:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50401:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50402:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50418:      "nearest_boundary": 301,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50419:      "boundary_distance": 13,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50420:      "boundary_distance_over_N": 0.021311475409836064,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50421:      "boundary_distance_over_min_chunk": 0.38235294117647056,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50422:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50438:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50439:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50440:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50441:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50442:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50458:      "nearest_boundary": 246,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50459:      "boundary_distance": 13,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50460:      "boundary_distance_over_N": 0.021311475409836064,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50461:      "boundary_distance_over_min_chunk": 0.38235294117647056,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50462:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50478:      "nearest_boundary": 356,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50479:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50480:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50481:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50482:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50498:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50499:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50500:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50501:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50502:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50518:      "nearest_boundary": 136,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50519:      "boundary_distance": 7,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50520:      "boundary_distance_over_N": 0.011475409836065573,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50521:      "boundary_distance_over_min_chunk": 0.20588235294117646,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50522:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50538:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50539:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50540:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50541:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50542:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50558:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50559:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50560:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50561:      "boundary_distance_over_min_chunk": 0.029411764705882353,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50562:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50578:      "nearest_boundary": 267,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50579:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50580:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50581:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50582:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50598:      "nearest_boundary": 432,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50599:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50600:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50601:      "boundary_distance_over_min_chunk": 0.029411764705882353,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50602:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50618:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50619:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50620:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50621:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50622:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50638:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50639:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50640:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50641:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50642:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50658:      "nearest_boundary": 487,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50659:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50660:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50661:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50662:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50678:      "nearest_boundary": 123,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50679:      "boundary_distance": 20,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50680:      "boundary_distance_over_N": 0.03278688524590164,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50681:      "boundary_distance_over_min_chunk": 0.5882352941176471,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50682:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50698:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50699:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50700:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50701:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50702:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50718:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50719:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50720:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50721:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50722:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50738:      "nearest_boundary": 288,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50739:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50740:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50741:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50742:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50758:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50759:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50760:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50761:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50762:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50778:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50779:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50780:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50781:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50782:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50798:      "nearest_boundary": 356,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50799:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50800:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50801:      "boundary_distance_over_min_chunk": 0.6176470588235294,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50802:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50818:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50819:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50820:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50821:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50822:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50838:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50839:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50840:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50841:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50842:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50858:      "nearest_boundary": 500,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50859:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50860:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50861:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50862:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50878:      "nearest_boundary": 356,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50879:      "boundary_distance": 35,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50880:      "boundary_distance_over_N": 0.05737704918032787,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50881:      "boundary_distance_over_min_chunk": 0.6363636363636364,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50882:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50898:      "nearest_boundary": 267,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50899:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50900:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50901:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50902:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50918:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50919:      "boundary_distance": 22,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50920:      "boundary_distance_over_N": 0.036065573770491806,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50921:      "boundary_distance_over_min_chunk": 0.4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50922:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50938:      "nearest_boundary": 267,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50939:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50940:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50941:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50942:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50958:      "nearest_boundary": 356,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50959:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50960:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50961:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50962:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50978:      "nearest_boundary": 500,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50979:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50980:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50981:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50982:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50998:      "nearest_boundary": 178,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:50999:      "boundary_distance": 35,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51000:      "boundary_distance_over_N": 0.05737704918032787,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51001:      "boundary_distance_over_min_chunk": 0.6363636363636364,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51002:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51018:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51019:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51020:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51021:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51022:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51038:      "nearest_boundary": 343,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51039:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51040:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51041:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51042:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51058:      "nearest_boundary": 254,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51059:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51060:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51061:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51062:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51078:      "nearest_boundary": 432,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51079:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51080:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51081:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51082:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51098:      "nearest_boundary": 254,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51099:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51100:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51101:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51102:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51118:      "nearest_boundary": 343,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51119:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51120:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51121:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51122:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51138:      "nearest_boundary": 432,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51139:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51140:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51141:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51142:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51158:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51159:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51160:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51161:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51162:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51178:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51179:      "boundary_distance": 4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51180:      "boundary_distance_over_N": 0.006557377049180328,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51181:      "boundary_distance_over_min_chunk": 0.07272727272727272,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51182:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51198:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51199:      "boundary_distance": 30,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51200:      "boundary_distance_over_N": 0.04918032786885246,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51201:      "boundary_distance_over_min_chunk": 0.5454545454545454,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51202:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51218:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51219:      "boundary_distance": 4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51220:      "boundary_distance_over_N": 0.006557377049180328,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51221:      "boundary_distance_over_min_chunk": 0.07272727272727272,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51222:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51238:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51239:      "boundary_distance": 3,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51240:      "boundary_distance_over_N": 0.004918032786885246,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51241:      "boundary_distance_over_min_chunk": 0.05454545454545454,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51242:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51258:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51259:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51260:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51261:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51262:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51278:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51279:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51280:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51281:      "boundary_distance_over_min_chunk": 0.01818181818181818,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51282:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51298:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51299:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51300:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51301:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51302:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51318:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51319:      "boundary_distance": 22,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51320:      "boundary_distance_over_N": 0.036065573770491806,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51321:      "boundary_distance_over_min_chunk": 0.4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51322:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51338:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51339:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51340:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51341:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51342:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51358:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51359:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51360:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51361:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51362:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51378:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51379:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51380:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51381:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51382:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51398:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51399:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51400:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51401:      "boundary_distance_over_min_chunk": 0.01818181818181818,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51402:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51418:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51419:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51420:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51421:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51422:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51438:      "nearest_boundary": 343,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51439:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51440:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51441:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51442:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51458:      "nearest_boundary": 288,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51459:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51460:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51461:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51462:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51478:      "nearest_boundary": 199,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51479:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51480:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51481:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51482:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51498:      "nearest_boundary": 343,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51499:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51500:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51501:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51502:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51518:      "nearest_boundary": 432,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51519:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51520:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51521:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51522:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51538:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51539:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51540:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51541:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51542:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51558:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51559:      "boundary_distance": 5,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51560:      "boundary_distance_over_N": 0.00819672131147541,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51561:      "boundary_distance_over_min_chunk": 0.09090909090909091,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51562:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51578:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51579:      "boundary_distance": 28,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51580:      "boundary_distance_over_N": 0.04590163934426229,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51581:      "boundary_distance_over_min_chunk": 0.509090909090909,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51582:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51598:      "nearest_boundary": 555,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51599:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51600:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51601:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51602:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51618:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51619:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51620:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51621:      "boundary_distance_over_min_chunk": 0.01818181818181818,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51622:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51638:      "nearest_boundary": 267,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51639:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51640:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51641:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51642:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51658:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51659:      "boundary_distance": 33,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51660:      "boundary_distance_over_N": 0.054098360655737705,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51661:      "boundary_distance_over_min_chunk": 0.6,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51662:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51678:      "nearest_boundary": 267,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51679:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51680:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51681:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51682:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51698:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51699:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51700:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51701:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51702:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51718:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51719:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51720:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51721:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51722:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51738:      "nearest_boundary": 178,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51739:      "boundary_distance": 35,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51740:      "boundary_distance_over_N": 0.05737704918032787,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51741:      "boundary_distance_over_min_chunk": 0.6363636363636364,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51742:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51758:      "nearest_boundary": 555,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51759:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51760:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51761:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51762:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51778:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51779:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51780:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51781:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51782:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51798:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51799:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51800:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51801:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51802:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51818:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51819:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51820:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51821:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51822:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51838:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51839:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51840:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51841:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51842:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51858:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51859:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51860:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51861:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51862:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51878:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51879:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51880:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51881:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51882:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51898:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51899:      "boundary_distance": 35,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51900:      "boundary_distance_over_N": 0.05737704918032787,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51901:      "boundary_distance_over_min_chunk": 0.6363636363636364,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51902:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51918:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51919:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51920:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51921:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51922:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51938:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51939:      "boundary_distance": 3,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51940:      "boundary_distance_over_N": 0.004918032786885246,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51941:      "boundary_distance_over_min_chunk": 0.05454545454545454,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51942:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51958:      "nearest_boundary": 555,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51959:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51960:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51961:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51962:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51978:      "nearest_boundary": 288,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51979:      "boundary_distance": 33,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51980:      "boundary_distance_over_N": 0.054098360655737705,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51981:      "boundary_distance_over_min_chunk": 0.6,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51982:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51998:      "nearest_boundary": 288,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:51999:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52000:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52001:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52002:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52018:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52019:      "boundary_distance": 33,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52020:      "boundary_distance_over_N": 0.054098360655737705,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52021:      "boundary_distance_over_min_chunk": 0.6,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52022:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52038:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52039:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52040:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52041:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52042:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52058:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52059:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52060:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52061:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52062:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52078:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52079:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52080:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52081:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52082:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52098:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52099:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52100:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52101:      "boundary_distance_over_min_chunk": 0.01818181818181818,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52102:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52118:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52119:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52120:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52121:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52122:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52138:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52139:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52140:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52141:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52142:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52158:      "nearest_boundary": 267,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52159:      "boundary_distance": 21,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52160:      "boundary_distance_over_N": 0.03442622950819672,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52161:      "boundary_distance_over_min_chunk": 0.38181818181818183,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52162:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52178:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52179:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52180:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52181:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52182:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52198:      "nearest_boundary": 267,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52199:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52200:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52201:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52202:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52218:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52219:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52220:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52221:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52222:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52238:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52239:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52240:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52241:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52242:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52258:      "nearest_boundary": 178,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52259:      "boundary_distance": 35,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52260:      "boundary_distance_over_N": 0.05737704918032787,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52261:      "boundary_distance_over_min_chunk": 0.6363636363636364,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52262:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52278:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52279:      "boundary_distance": 28,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52280:      "boundary_distance_over_N": 0.04590163934426229,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52281:      "boundary_distance_over_min_chunk": 0.509090909090909,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52282:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52298:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52299:      "boundary_distance": 2,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52300:      "boundary_distance_over_N": 0.003278688524590164,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52301:      "boundary_distance_over_min_chunk": 0.03636363636363636,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52302:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52318:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52319:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52320:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52321:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52322:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52338:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52339:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52340:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52341:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52342:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52358:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52359:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52360:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52361:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52362:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52378:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52379:      "boundary_distance": 22,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52380:      "boundary_distance_over_N": 0.036065573770491806,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52381:      "boundary_distance_over_min_chunk": 0.4,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52382:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52398:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52399:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52400:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52401:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52402:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52418:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52419:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52420:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52421:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52422:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52438:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52439:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52440:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52441:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52442:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52458:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52459:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52460:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52461:      "boundary_distance_over_min_chunk": 0.01818181818181818,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52462:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52478:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52479:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52480:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52481:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52482:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52498:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52499:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52500:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52501:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52502:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52518:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52519:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52520:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52521:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52522:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52538:      "nearest_boundary": 411,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52539:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52540:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52541:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52542:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52558:      "nearest_boundary": 500,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52559:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52560:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52561:      "boundary_distance_over_min_chunk": 0.6181818181818182,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52562:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52578:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52579:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52580:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52581:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52582:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52598:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52599:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52600:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52601:      "boundary_distance_over_min_chunk": 0.01818181818181818,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52602:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52618:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52619:      "boundary_distance": 2,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52620:      "boundary_distance_over_N": 0.003278688524590164,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52621:      "boundary_distance_over_min_chunk": 0.03636363636363636,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52622:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52638:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52639:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52640:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52641:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52642:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52658:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52659:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52660:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52661:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52662:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52678:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52679:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52680:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52681:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52682:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52698:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52699:      "boundary_distance": 56,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52700:      "boundary_distance_over_N": 0.09180327868852459,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52701:      "boundary_distance_over_min_chunk": 0.6292134831460674,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52702:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52718:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52719:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52720:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52721:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52722:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52738:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52739:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52740:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52741:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52742:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52758:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52759:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52760:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52761:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52762:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52778:      "nearest_boundary": 89,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52779:      "boundary_distance": 54,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52780:      "boundary_distance_over_N": 0.08852459016393442,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52781:      "boundary_distance_over_min_chunk": 0.6067415730337079,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52782:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52798:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52799:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52800:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52801:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52802:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52818:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52819:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52820:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52821:      "boundary_distance_over_min_chunk": 0.011235955056179775,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52822:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52838:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52839:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52840:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52841:      "boundary_distance_over_min_chunk": 0.38202247191011235,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52842:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52858:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52859:      "boundary_distance": 33,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52860:      "boundary_distance_over_N": 0.054098360655737705,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52861:      "boundary_distance_over_min_chunk": 0.3707865168539326,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52862:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52878:      "nearest_boundary": 178,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52879:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52880:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52881:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52882:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52898:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52899:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52900:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52901:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52902:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52918:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52919:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52920:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52921:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52922:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52938:      "nearest_boundary": 178,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52939:      "boundary_distance": 35,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52940:      "boundary_distance_over_N": 0.05737704918032787,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52941:      "boundary_distance_over_min_chunk": 0.39325842696629215,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52942:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52958:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52959:      "boundary_distance": 3,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52960:      "boundary_distance_over_N": 0.004918032786885246,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52961:      "boundary_distance_over_min_chunk": 0.033707865168539325,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52962:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52978:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52979:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52980:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52981:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52982:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52998:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:52999:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53000:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53001:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53002:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53018:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53019:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53020:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53021:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53022:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53038:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53039:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53040:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53041:      "boundary_distance_over_min_chunk": 0.38202247191011235,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53042:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53058:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53059:      "boundary_distance": 33,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53060:      "boundary_distance_over_N": 0.054098360655737705,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53061:      "boundary_distance_over_min_chunk": 0.3707865168539326,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53062:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53078:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53079:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53080:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53081:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53082:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53098:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53099:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53100:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53101:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53102:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53118:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53119:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53120:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53121:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53122:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53138:      "nearest_boundary": 89,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53139:      "boundary_distance": 54,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53140:      "boundary_distance_over_N": 0.08852459016393442,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53141:      "boundary_distance_over_min_chunk": 0.6067415730337079,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53142:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53158:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53159:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53160:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53161:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53162:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53178:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53179:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53180:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53181:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53182:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53198:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53199:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53200:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53201:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53202:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53218:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53219:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53220:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53221:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53222:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53238:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53239:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53240:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53241:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53242:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53258:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53259:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53260:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53261:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53262:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53278:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53279:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53280:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53281:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53282:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53298:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53299:      "boundary_distance": 59,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53300:      "boundary_distance_over_N": 0.09672131147540984,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53301:      "boundary_distance_over_min_chunk": 0.6629213483146067,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53302:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53318:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53319:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53320:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53321:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53322:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53338:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53339:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53340:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53341:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53342:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53358:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53359:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53360:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53361:      "boundary_distance_over_min_chunk": 0.38202247191011235,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53362:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53378:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53379:      "boundary_distance": 33,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53380:      "boundary_distance_over_N": 0.054098360655737705,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53381:      "boundary_distance_over_min_chunk": 0.3707865168539326,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53382:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53398:      "nearest_boundary": 178,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53399:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53400:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53401:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53402:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53418:      "nearest_boundary": 322,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53419:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53420:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53421:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53422:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53438:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53439:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53440:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53441:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53442:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53458:      "nearest_boundary": 178,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53459:      "boundary_distance": 35,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53460:      "boundary_distance_over_N": 0.05737704918032787,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53461:      "boundary_distance_over_min_chunk": 0.39325842696629215,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53462:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53478:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53479:      "boundary_distance": 56,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53480:      "boundary_distance_over_N": 0.09180327868852459,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53481:      "boundary_distance_over_min_chunk": 0.6292134831460674,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53482:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53498:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53499:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53500:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53501:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53502:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53518:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53519:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53520:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53521:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53522:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53538:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53539:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53540:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53541:      "boundary_distance_over_min_chunk": 0.38202247191011235,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53542:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53558:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53559:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53560:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53561:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53562:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53578:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53579:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53580:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53581:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53582:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53598:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53599:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53600:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53601:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53602:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53618:      "nearest_boundary": 89,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53619:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53620:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53621:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53622:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53638:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53639:      "boundary_distance": 57,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53640:      "boundary_distance_over_N": 0.09344262295081968,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53641:      "boundary_distance_over_min_chunk": 0.6404494382022472,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53642:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53658:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53659:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53660:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53661:      "boundary_distance_over_min_chunk": 0.011235955056179775,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53662:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53678:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53679:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53680:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53681:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53682:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53698:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53699:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53700:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53701:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53702:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53718:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53719:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53720:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53721:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53722:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53738:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53739:      "boundary_distance": 56,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53740:      "boundary_distance_over_N": 0.09180327868852459,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53741:      "boundary_distance_over_min_chunk": 0.6292134831460674,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53742:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53758:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53759:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53760:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53761:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53762:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53778:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53779:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53780:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53781:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53782:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53798:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53799:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53800:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53801:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53802:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53818:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53819:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53820:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53821:      "boundary_distance_over_min_chunk": 0.011235955056179775,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53822:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53838:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53839:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53840:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53841:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53842:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53858:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53859:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53860:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53861:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53862:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53878:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53879:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53880:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53881:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53882:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53898:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53899:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53900:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53901:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53902:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53918:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53919:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53920:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53921:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53922:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53938:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53939:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53940:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53941:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53942:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53958:      "nearest_boundary": 521,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53959:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53960:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53961:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53962:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53978:      "nearest_boundary": 89,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53979:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53980:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53981:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53982:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53998:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:53999:      "boundary_distance": 5,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54000:      "boundary_distance_over_N": 0.00819672131147541,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54001:      "boundary_distance_over_min_chunk": 0.056179775280898875,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54002:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54018:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54019:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54020:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54021:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54022:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54038:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54039:      "boundary_distance": 56,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54040:      "boundary_distance_over_N": 0.09180327868852459,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54041:      "boundary_distance_over_min_chunk": 0.6292134831460674,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54042:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54058:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54059:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54060:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54061:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54062:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54078:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54079:      "boundary_distance": 33,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54080:      "boundary_distance_over_N": 0.054098360655737705,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54081:      "boundary_distance_over_min_chunk": 0.3707865168539326,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54082:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54098:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54099:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54100:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54101:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54102:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54118:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54119:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54120:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54121:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54122:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54138:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54139:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54140:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54141:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54142:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54158:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54159:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54160:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54161:      "boundary_distance_over_min_chunk": 0.011235955056179775,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54162:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54178:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54179:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54180:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54181:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54182:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54198:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54199:      "boundary_distance": 54,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54200:      "boundary_distance_over_N": 0.08852459016393442,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54201:      "boundary_distance_over_min_chunk": 0.6067415730337079,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54202:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54218:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54219:      "boundary_distance": 55,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54220:      "boundary_distance_over_N": 0.09016393442622951,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54221:      "boundary_distance_over_min_chunk": 0.6179775280898876,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54222:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54238:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54239:      "boundary_distance": 34,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54240:      "boundary_distance_over_N": 0.05573770491803279,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54241:      "boundary_distance_over_min_chunk": 0.38202247191011235,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54242:      "boundary_hit_le_2": false,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54258:      "nearest_boundary": 233,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54259:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54260:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54261:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54262:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54278:      "nearest_boundary": 377,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54279:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54280:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54281:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54282:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54298:      "nearest_boundary": 466,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54299:      "boundary_distance": 0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54300:      "boundary_distance_over_N": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54301:      "boundary_distance_over_min_chunk": 0.0,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54302:      "boundary_hit_le_2": true,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54318:      "nearest_boundary": 144,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54319:      "boundary_distance": 1,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54320:      "boundary_distance_over_N": 0.001639344262295082,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54321:      "boundary_distance_over_min_chunk": 0.011235955056179775,
tools/data/gap_label_ostrowski_recognizability_gate_20260508_2013.json:54322:      "boundary_hit_le_2": true,
tools/data/notte_20260318_0330.md:4:  ising_2d_var_-0.1: r=0.9712272686438829, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260318_0330.md:5:  ising_2d_var_0.1: r=0.9979279302130017, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260318_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260318_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260318_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260318_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260318_0330.md:10:  brownian_motion_var_0.3: r=0.38026918322218933, spacing=Poisson-like (⟨r⟩=0.3900658787089022)
tools/data/notte_20260318_0330.md:11:  brownian_motion_var_0.5: r=1.0, spacing=Poisson-like (⟨r⟩=0.38552654965993177)
tools/data/notte_20260318_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260318_0330.md:13:  percolation_var_0.55: r=1.04, spacing=Poisson-like (⟨r⟩=0.4547791897708293)
tools/data/notte_20260318_0330.md:14:  percolation_var_0.65: r=1.0416666666666667, spacing=Poisson-like (⟨r⟩=0.40597402614552264)
tools/data/notte_20260318_0330.md:44:## Fase 4: Cross-domain
tools/data/observable_rank_audit_seed20260506.json:3:  "question": "Do crossover observables contain independent directions or one latent boundary coordinate?",
tools/data/notte_20260323_0330.md:4:  ising_2d_var_-0.1: r=0.9751114725776623, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260323_0330.md:5:  ising_2d_var_0.1: r=0.9978353809490685, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260323_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260323_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260323_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260323_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260323_0330.md:10:  brownian_motion_var_0.3: r=0.9954329949374547, spacing=Poisson-like (⟨r⟩=0.3993227982961604)
tools/data/notte_20260323_0330.md:11:  brownian_motion_var_0.5: r=0.9772727272727273, spacing=Poisson-like (⟨r⟩=0.389017141986291)
tools/data/notte_20260323_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260323_0330.md:13:  percolation_var_0.55: r=1.0, spacing=Poisson-like (⟨r⟩=0.45592478441584805)
tools/data/notte_20260323_0330.md:14:  percolation_var_0.65: r=1.04, spacing=Poisson-like (⟨r⟩=0.4752713133131334)
tools/data/notte_20260323_0330.md:47:## Fase 4: Cross-domain
tools/data/notte_20260319_0330.md:4:  ising_2d_var_-0.1: r=0.9570353957575984, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260319_0330.md:5:  ising_2d_var_0.1: r=0.9941836310760281, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260319_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260319_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260319_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260319_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260319_0330.md:10:  brownian_motion_var_0.3: r=1.0, spacing=Poisson-like (⟨r⟩=0.38039334783343215)
tools/data/notte_20260319_0330.md:11:  brownian_motion_var_0.5: r=1.0285714285714287, spacing=Poisson-like (⟨r⟩=0.39086312113148597)
tools/data/notte_20260319_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260319_0330.md:13:  percolation_var_0.55: r=1.0416666666666667, spacing=Poisson-like (⟨r⟩=0.42776762684503483)
tools/data/notte_20260319_0330.md:14:  percolation_var_0.65: r=0.9583333333333335, spacing=Poisson-like (⟨r⟩=0.4849181304650346)
tools/data/notte_20260319_0330.md:44:## Fase 4: Cross-domain
tools/data/seme_axioms.json:39:    "id": "BOUNDARY",
tools/data/seme_axioms.json:40:    "claim": "7 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_axioms.json:98:    "nota": "Teorema stretto: k=1 unico collapsing tra a→a^k·b. Contesto largo: catena fino a GUE dipende da Katz-Sarnak (non dimostrato per L(s,χ₅) specifica).",
tools/data/seme_axioms.json:247:    "claim": "BOHR_SOMMERFELD: pozzo liscio → livelli armonici. Niente GUE.",
tools/data/seme_axioms.json:310:    "claim": "BOUNDARY: diagramma (det,tr). det=-1 sempre GUE. Risolto.",
tools/data/seme_axioms.json:364:    "claim": "Il tensore metrico dei primi è g=(p/2)². Nel tempo ln(p), è de Sitter 1+1D. La curvatura intrinseca ha z=-8.8 (MENO strutturata del random) ma i rapporti ΔΓ hanno z=+22.5 (GUE). La struttura cambia livello tra derivata prima e seconda.",
tools/data/seme_axioms.json:372:    "id": "TRANS_BOUNDARY_FALSIFICA_F6",
tools/data/seme_axioms.json:449:    "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_axioms.json:454:    "claim": "Three independent observables (beta, <r>, acf1) predict Poisson at p*~10^{13.7}-10^{15.0}. Spread 1.3 decades = universal crossover. Hierarchy: shape decorrelates first (beta at 10^{13.7}), ratio second (<r> at 10^{14.5}), sequential memory last (acf1 at 10^{15.0}).",
tools/data/seme_axioms.json:471:    "id": "DIPOLAR_ILLUSORY_BOUNDARY",
tools/data/seme_axioms.json:476:    "nota": "Exp 2026-04-17: PNT-norm recovers 45/50 neg ACF. Trend adds +0.008/lag masking 70% of true anti-corr. Exp 2026-04-18: Z/6Z FALSIFIED as crossover mechanism. Crossover lag is k*=A/C, smooth function of trend strength ln(p)^s (s=1.0 gives lag 6 exactly). Z/6Z residue ACF has no period-6 (lag 6 ACF=+0.001). Residue-preserving shuffle xover=2.5 (=full shuffle). Cramer+Z/6Z = Cramer. NEW: residue lag-1 anti-corr r_1=-0.148 (3.8x stronger than magnitude acf1). Consecutio: k*(p) derivable from A(ln p) + local variance; two anti-corr channels (residue vs magnitude); regime narrowing at Poisson crossover.",
tools/data/seme_axioms.json:507:    "id": "TWO_KINDS_GUE",
tools/data/seme_axioms.json:508:    "claim": "Due meccanismi generano statistiche GUE: (1) distribution-GUE — la forma dei gap e gia repulsiva (primes, random matrices), delta_r < 0; (2) ordering-GUE — i gap sono Poisson ma l'ordine sequenziale crea repulsione (fibonacci, percolation, coupled_osc), delta_r > 0. Il segno di delta_r e il discriminante.",
tools/data/seme_axioms.json:512:    "nota": "Shuffle audit 2026-04-24. z-scores: primes=-26.6, gue=-14.7, fibonacci=+8.0, coupled_osc=+43.5, percolation=+16.1. Consecutio: i domini ordering-GUE hanno memoria Markov come i primi? O il meccanismo di ordine e diverso?",
tools/data/seme_axioms.json:517:    "claim": "La memoria sequenziale dei primi ha due canali: algebrico (mod 6, 22% Markov-1, z=-3133) e statistico (tercile, 0.16%, z=-22). Rapporto 140x. I domini ordering-GUE hanno solo il canale statistico (0.2-1.5%). Il 33% scale-invariant e specifico dei primi e del vincolo Z/6Z (F2). Nessun altro dominio ha memoria dual-channel.",
tools/data/seme_axioms.json:521:    "nota": "Exp 2026-04-25: 8 domini, 200 shuffles, ordini Markov 1-3. Consecutio TWO_KINDS_GUE. Saturation depth (14-100%) e asse ortogonale a GUE type.",
tools/data/seme_axioms.json:535:    "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_axioms.json:544:    "claim": "Le claim di collinearita/rank tra osservabili canonici vanno riportate con observables_registry, z original-vs-shuffle per osservabile e controlli Poisson/shuffle. Nel perimetro 20260506_1955, primi e GUE sotto partial-shuffle uniforme comprimono le retention curves a un coordinate dominante (rank medio 1.30 e 1.11), mentre Poisson e prime-shuffle mostrano rank piu alto solo con denominatori deboli (weak obs medi 5.0 e 4.67). Rank osservabile alto senza denominatori validi e segnale META, non struttura.",
tools/data/seme_axioms.json:552:    "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_axioms.json:553:    "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_axioms.json:562:    "claim": "Il denominator gate trasferisce cross-perimetro come supporto one-sided dell'ordine generato, non come endpoint-stable support a due poli. Nel perimetro agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[]; il polo coerente ha stable_count 3.0-5.0, il polo illusorio 0.05-0.60. La beta ambigua 0.30 e coordinata del protocollo di perturbazione finche non viene ancorata a un asse semantico del dominio.",
tools/data/seme_axioms.json:571:    "claim": "Applied valutatore REDESIGN from 20260507_0803: Costruire una matrice di trasferibilita' del denominator gate: applicarlo a 3-4 perimetri non-BOUNDARY con poli coerente/illusorio e verificare quali parti trasferiscono (supporto one-sided, coordinat",
tools/data/seme_axioms.json:669:    "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:156:  "summary_by_domain_phase": {
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:454:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:485:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:516:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:547:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:579:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:611:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:643:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:675:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:706:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:737:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:768:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:796:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:828:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:860:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:892:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:923:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:954:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:985:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1017:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1049:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1081:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1113:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1144:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1175:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1206:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1238:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1270:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1302:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1334:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1365:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1396:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1427:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1459:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1487:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1519:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1539:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1570:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1601:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1632:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1656:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1676:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1700:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1720:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1751:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1782:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1813:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1845:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1877:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1909:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1941:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:1972:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2003:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2034:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2058:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2074:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2090:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2114:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2145:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2176:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2207:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2223:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2239:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2259:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2275:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2306:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2337:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2368:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2400:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2416:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2432:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2452:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2483:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2514:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2545:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2561:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2577:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2593:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2609:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2640:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2671:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2702:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2718:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2734:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2754:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2770:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2801:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2832:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2863:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2879:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2895:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2911:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2927:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2958:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:2989:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3020:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3036:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3052:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3068:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3084:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3115:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3146:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3177:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3193:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3209:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3225:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3241:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3272:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3303:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3334:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3350:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3366:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3382:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3398:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3429:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3460:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3491:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3507:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3523:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3539:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3555:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3586:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3617:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3648:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3664:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3680:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3696:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3712:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3743:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3774:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3805:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3821:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3837:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3853:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3869:      "domain": "phi",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3900:      "domain": "silver",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3931:      "domain": "bronze",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3962:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3978:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:3994:      "domain": "balanced_random_phi_density",
tools/data/quasiperiodic_vc_lattice_gate_20260508_2140.json:4010:      "domain": "balanced_random_phi_density",
tools/data/odlyzko_100k_probe.json:26:      "class": "GUE",
tools/data/odlyzko_100k_probe.json:32:      "class": "GUE",
tools/data/odlyzko_100k_probe.json:38:      "class": "GUE",
tools/data/odlyzko_100k_probe.json:44:      "class": "GUE",
tools/data/odlyzko_100k_probe.json:56:    "fd_class": "GUE",
tools/data/odlyzko_100k_probe.json:57:    "verdict": "LIKELY GUE: \u03b2\u2192GUE, KS\u2192GOE (finite-height effect, Piano 11c)",
tools/data/prime_vs_mod6_sr_boundary_20260513_0330_seedcheck.json:2:  "experiment": "prime_vs_mod6_sr_boundary",
tools/data/prime_vs_mod6_sr_boundary_20260513_0330_seedcheck.json:3:  "question": "Does SR belong to prime selection or to the row-local 6k +/- 1 pre-boundary?",
tools/data/prime_vs_mod6_sr_boundary_20260513_0330_seedcheck.json:38:    "out": "tools/data/prime_vs_mod6_sr_boundary_20260513_0330_seedcheck.json"
tools/data/prime_vs_mod6_sr_boundary_20260513_0330_seedcheck.json:646:  "verdict": "SR_BELONGS_TO_MOD6_PREBOUNDARY",
tools/data/dipolar_crossover.json:7:  "GUE_baseline": {
tools/data/r_excess_analysis.json:16:      "vs_synthetic_gue": "Synthetic GUE shows excess ~0 at all N"
tools/data/r_excess_analysis.json:51:      "The <r> excess is real, persists after unfolding, and is absent in synthetic GUE",
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.json:2:  "experiment": "prime_vs_mod6_sr_boundary",
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.json:3:  "question": "Does SR belong to prime selection or to the row-local 6k +/- 1 pre-boundary?",
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.json:40:    "out": "tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.json",
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.json:41:    "trace_jsonl": "tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.trace.jsonl"
tools/data/notte_20260324_0330.md:5:  collatz_cp: r=0.8359033608638953, spacing=GUE-like [conferma]
tools/data/notte_20260324_0330.md:8:  ising_2d_cp_-0.3165707122601713: r=0.9277519726198978, spacing=GUE-like [conferma]
tools/data/notte_20260324_0330.md:9:  ising_2d_cp_0.4639558877000029: r=0.981531507124999, spacing=GUE-like [conferma]
tools/data/notte_20260324_0330.md:10:  brownian_motion_cp_0.18979322168052606: r=1.0, spacing=Poisson-like [conferma]
tools/data/notte_20260324_0330.md:11:  brownian_motion_cp_0.935077879517312: r=1.0, spacing=GUE-like [conferma]
tools/data/notte_20260324_0330.md:12:  percolation_cp_0.3048827772508223: r=0.9223529411764706, spacing=GUE-like [conferma]
tools/data/notte_20260324_0330.md:13:  percolation_cp_0.8107442354652781: r=1.0, spacing=GUE-like [conferma]
tools/data/notte_20260324_0330.md:14:  cellular_automata_cp_150: r=0.7452006980802792, spacing=GUE-like [conferma]
tools/data/notte_20260324_0330.md:17:  brownian_motion_var_0.3: r=1.0, spacing=Poisson-like (⟨r⟩=0.39929342988791194)
tools/data/notte_20260324_0330.md:18:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260324_0330.md:19:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260324_0330.md:20:  brownian_motion_var_0.5: r=1.0, spacing=Poisson-like (⟨r⟩=0.3880568632202867)
tools/data/notte_20260324_0330.md:52:## Fase 4: Cross-domain
tools/data/lab_registro.json:231:            "tipo": "GUE-like — strutturato",
tools/data/lab_registro.json:235:          "interpretazione": "La curvatura della metrica dei primi è GUE-like. La stessa statistica degli zeri di zeta (Montgomery-Odlyzko). Il segnale è più forte nella curvatura (derivata seconda) che nei gap (derivata prima). La struttura si vede meglio salendo di derivata.",
tools/data/lab_registro.json:238:            "La curvatura ha r=0.503 (GUE-like) — stessa statistica degli zeri di zeta",
tools/data/lab_registro.json:248:            "conclusione": "Il segnale GUE-like è nelle correlazioni tra gap consecutivi. z=22.5.",
tools/data/lab_registro.json:262:            "tensione": "La curvatura intrinseca di g=(p/2)² ha z=-8.8 vs shuffle (MENO strutturata). Il segnale GUE z=+22.5 vive nei rapporti consecutivi di ΔΓ, non nella curvatura del tensore. La metrica è quasi liscia — la struttura sta nei salti tra consecutivi.",
tools/data/seme_backup_b2_20260509_144120.json:2:  "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_backup_b2_20260509_144120.json:3:  "new_direzione": "Trasferire il gate BOUNDARY fuori dal perimetro base: testare null_state -> transfer_state -> denominator_state come operatore falsificabile sul nodo QxG continuo/discreto, con controllo shuffle e criterio esplicito di fall/blank/transfer.",
tools/data/notte_20260325_0330.md:5:  collatz_cp: r=0.8406480180762742, spacing=GUE-like [conferma]
tools/data/notte_20260325_0330.md:8:  ising_2d_cp_-0.3721731072469586: r=0.9356675556004418, spacing=GUE-like [conferma]
tools/data/notte_20260325_0330.md:9:  ising_2d_cp_0.3729192328786819: r=0.6459279501338727, spacing=GUE-like [conferma]
tools/data/notte_20260325_0330.md:10:  brownian_motion_cp_0.19266122489026305: r=1.0, spacing=Poisson-like [conferma]
tools/data/notte_20260325_0330.md:11:  brownian_motion_cp_0.8027792897204493: r=0.5246331236897275, spacing=Poisson-like [conferma]
tools/data/notte_20260325_0330.md:12:  percolation_cp_0.33879710599589613: r=0.6393442622950819, spacing=GUE-like [conferma]
tools/data/notte_20260325_0330.md:13:  percolation_cp_0.8987621995814573: r=1.0743910467412772, spacing=GUE-like [conferma]
tools/data/notte_20260325_0330.md:14:  cellular_automata_cp_90: r=0.6458196181698486, spacing=GUE-like [conferma]
tools/data/notte_20260325_0330.md:17:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260325_0330.md:18:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260325_0330.md:19:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260325_0330.md:20:  ising_2d_var_0.1: r=0.9979275919880332, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260325_0330.md:52:## Fase 4: Cross-domain
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.json:2:  "experiment": "prime_vs_mod6_sr_boundary",
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.json:3:  "question": "Does SR belong to prime selection or to the row-local 6k +/- 1 pre-boundary?",
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.json:46:    "out": "tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.json",
tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.json:47:    "trace_jsonl": "tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.trace.jsonl"
tools/data/research_kb.json:35:      "formalization": "Z=0 has dual nature: null AND boundary",
tools/data/research_kb.json:69:      "content": "D-ND dynamics show GUE-like level repulsion in zero spacing (\u27e8r\u27e9\u22480.84)"
tools/data/research_kb.json:90:      "content": "GUE-like spacing in D-ND zeros",
tools/data/research_kb.json:119:      "prediction": "Spacing statistics at D\u2194ND transition show GUE-like repulsion",
tools/data/piano11e_results.json:43:    "note": "Fraction is 0.663, between 1/phi=0.618 and 2/3=0.667. Not definitively golden due to GUE uncertainty (~0.019)."
tools/data/piano11e_results.json:52:    "note": "Classic Berry saturation. GUE at short range, arithmetic rigidity at long range."
tools/data/piano11e_results.json:58:    "note": "Odlyzko spacings 11% less variable than GUE. Extra rigidity from primes."
tools/data/piano11e_results.json:75:    "Previous GUE rho(1) = -0.300 was from crude unfolding (divide by mean). Correct value with semicircle unfolding: -0.308 (extrapolated).",
tools/data/piano11e_results.json:76:    "Previous '93% match' was comparing Odlyzko (-0.357) directly to D-ND (-0.382). The correct statement is: fraction toward D-ND = (Odl-GUE)/(DND-GUE) = 0.663.",
tools/data/aubry_v2_generator_scaling_gate_20260515_1816.json:15:    "claim": "at V=2 the boundary is a generator property only if binary Sturmian, cosine, and null controls carry different participation scaling",
tools/data/aubry_v2_generator_scaling_gate_20260515_1816.json:17:    "non_possible": "claiming phi-specific boundary if the V=2 tau is shared by density shuffle or by non-phi Sturmian controls",
tools/data/aubry_v2_generator_scaling_gate_20260515_1816.json:304:  "summary_by_domain": {
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:8:  "physical_B": "3D Anderson tight-binding finite-size metallic/critical boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:11:  "source": "generated_3d_anderson_tight_binding_periodic_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:2678:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:2679:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep00",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:2900:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:2901:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep01",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3122:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3123:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep02",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3344:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3345:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep03",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3566:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3567:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep04",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3788:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:3789:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep05",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4010:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4011:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep06",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4232:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4233:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep07",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4454:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4455:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep08",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4676:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4677:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep09",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4898:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:4899:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep10",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:5120:      "expected_class": "Anderson_3D_W16p5_critical_boundary",
tools/data/anderson3d_component_state_interface_input_20260514_1850.json:5121:      "label": "Anderson_3D_W16p5_critical_boundary_L6_rep11",
tools/data/repairs/repair_20260514_1631_decision.json:1:{"cycle_ts": "20260514_1631", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1631", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1631.md", "exists": true, "title": "Agent Report - Chiusura tester rimbalzo fisico W=6", "size": 9494}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1631.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente rispetto alle 8 lenti: non usa zero/proibizioni improprie, dichiara baseline classica, non_possible, contaminazione CE e deliberate_counter_perimeter.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_163527.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_163527.json", "rho": 0.8992, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "medium", "reasoning": "Il ciclo ha chiuso regressivamente il rimbalzo fisico: il claim e' stato ridotto da possibile legge a tester operativo `component_state(SR,L1,triple_var)`, con Bridge QA clean e health completed. Resta una mossa naturale nello stesso frame: riusare il tester su un perimetro piu' esterno e correggere prima dell'esecuzione il nodo sanitario indicato dall'Affinatore (`evidence_tier + trace_path`), senza richiedere intervento operatore.", "action_type": "trigger_cycle", "detail": {"direction": "Continuare nel frame GUE/Poisson-Anderson usando `component_state(SR,L1,triple_var)` come tester operativo, con contratto pre-run esplicito `evidence_tier` e `trace_path` obbligatori.", "constraint": "Non promuovere il pattern a legge fisica; testare trasferibilita' del tester su un dominio fisico/simulato ordinato o su sweep Anderson multi-W, con null Poisson span-matched e trace JSONL verificabile.", "reason": "Il deposito e' vivo ma non cristallizzabile: serve una replica di trasferibilita' del tester, non nuovo fit locale."}, "notes": "Side-effect log-only: richiesta prosecuzione del ciclo con contratto sanitario rafforzato prima del run."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1631.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260509_0652.json:50:          "suggestion": "Aggiungere un failure mode esplicito: \"ordine generativo\" significa stabilita' 12/12 internal_cross e 0 multi/floor su phase x threshold; singoli internal_cross non-Sturmian non contano come trasporto del boundary."
tools/data/repairs/repair_20260509_0652.json:72:      "reasoning": "Il ciclo ha prodotto una falsificazione strutturale utile: il label-set preservato non basta a ricostruire il boundary `V_c` nel perimetro N=89. Non serve fermare l'operatore: la consecutio e' gia' indicata dal deposito, cioe' riparare il null al nodo generativo e distinguere phase-shuffle Sturmian da surrogate label-preserving prima di estendere a GUE/Poisson.",
tools/data/evolution/evolution_20260514_1612.md:3:Il report osserva il passo come traiettoria `prime-minus-mod6 -> trasduttore -> GUE/Anderson`, individua l’attrito nel tier di evidenza non dichiarato prima della misura, e mette in consecutio il prossimo perimetro: `W=6`, `evidence_tier` esplicito, autopsy dalla trace lab-native.
tools/data/repairs/repair_20260514_1656.json:66:      "reasoning": "La riparazione L6 richiesta dall'operatore e' stata completata senza cambiare contenuto scientifico: Bridge QA clean, health completed, e il verdict resta correttamente CONSTRAINT / FIT-READY TESTER. Non emerge una nuova dipendenza dall'operatore: il residuo era formale/contrattuale ed e' stato chiuso nel nodo regressivo del report. Il seme e' gia' avanzato a piano 125 con direzione viva sul confine GUE/Poisson, quindi il passo successivo e' riprendere il flusso sperimentale.",
tools/data/repairs/repair_20260514_1656.json:69:        "direction": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine e' il terzo incluso operativo",
tools/data/repairs/repair_20260508_2005_decision.json:1:{"cycle_ts": "20260508_2005", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_2005", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_2005.md", "exists": true, "title": "Agent Report - Symbolic Grammar Gate Del Core Phi", "size": 11218}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_2005.json", "exists": true, "coherent": false, "summary": "Il report e' sostanzialmente coerente sui dati visibili, ma rompe L3 nel verdict nominando un gate gap_ratio dichiarato non testato; L2 richiede solo rinforzo quantitativo.", "counts": {"high": 0, "medium": 1, "low": 1}, "flags": [{"lens": "L3", "severity": "medium", "claim": "Verdict: \"CONSTRAINT on TRASCENDENZA_LIMITE / QPG_GAP_RATIO_DENOMINATOR_GATE\"", "suggestion": "Riformulare il verdict sul nodo testato: symbolic_grammar_boundary_gate. Se QPG_GAP_RATIO_DENOMINATOR_GATE deve restare nel claim, il prossimo ciclo deve includere gap_ratio come osservabile o dichiarare il ponte regressivo tra i due gate."}, {"lens": "L2", "severity": "low", "claim": "\"same_length_contiguous_shuffle conserva grammatica Sturmian locale almeno quanto l'allineato\" e \"misaligned e' piu' baseline-Sturmian dell'allineato nel rate aggregato high\"", "suggestion": "Nel prossimo ciclo riportare anche count grezzi non-zero, differenza di proporzioni con intervallo/binomial check, e possibilmente mutual information mode→zero_excess per evitare drift da denominatore."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_201056.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 14, "new_count": 14}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_201056.json", "rho": 0.9075, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "medium", "reasoning": "Il ciclo ha prodotto un vincolo utile ma non una chiusura: la grammatica locale Sturmian non separa supertile aligned da same-length, mentre il collasso resta legato all'ordine interno. Poiche' il seme corrente punta gia' a 8 domini GUE e 5 Poisson e il report dichiara questi domini come not_tested, la prossima mossa e' trasferire il vincolo sul frame cross-dominio invece di ridisegnare ancora localmente.", "action_type": "trigger_cycle", "detail": {"direction": "applicare il gate grammaticale come controllo negativo/lettore di collasso su domini GUE e Poisson reali", "focus": "verificare se zero_grammar_excess_rate resta baseline nei domini strutturati e collassa solo quando viene perturbato l'ordine interno", "avoid": "non promuovere boundary simbolico del supertile come portatore; usarlo come vincolo falsificato"}, "notes": "Continuare un giro nello stesso frame, ma spostando il peso dal boundary del supertile al confronto cross-dominio richiesto dal seme."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_2005.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/vocabolario_custom.json:43:    "desc": "Scoperto da DUAL_SYMMETRY_BOUNDARY: phi supera controllo 110.5x: err_phi=0.0100 vs err_ctrl=1.10",
tools/data/evolution/evolution_20260511_0330.md:3:Ho mantenuto il report breve e centrato sul passo: scissione `prime_persistent_blank` in due canali, attrito telemetrico `completed_no_jsonl`, nodo regressivo nel contratto di osservazione, consecutio verso `prime_SR_persistent_boundary`.
tools/data/repairs/repair_20260509_0637_decision.json:1:{"cycle_ts": "20260509_0637", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260509_0637", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0637.md", "exists": true, "title": "Agent Report - Vc Null Regression Gate", "size": 10853}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0637.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente rispetto alle 7 lenti: gli hard claim sono perimetrati, il null label-preserving fallito viene dichiarato, e la controparte non_possible e' esplicita.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_064401.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_064401.json", "rho": 0.985, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "medium", "reasoning": "Il ciclo ha prodotto un vincolo operativo sul null regressivo di `V_c`, non una falsificazione conclusiva ne' una cristallizzazione. Il perimetro dichiarato e' ancora incompleto: restano esplicitamente non testati GUE/Poisson reali, silver/bronze, fit power-law e un label-preserving forte con Jaccard>=0.75; quindi la prossima mossa naturale e' completare il frame prima di ridisegnarlo.", "action_type": "trigger_cycle", "detail": {"direction": "Continuare sul frame `V_c` null regressivo estendendo i controlli: GUE/Poisson reali, metallici silver/bronze e surrogate label-preserving forte con soglia Jaccard>=0.75.", "reason": "Il ciclo ha isolato il nodo regressivo ma non ha ancora discriminato se il portatore e' ordine Sturmian, label-set o artefatto della griglia/perimetro."}, "notes": "Tenere il focus sull'evento di bordo prima del valore numerico: floor_hit/internal_cross/internal_multi/no_cross. Se anche il null forte recupera crossing interno, `V_c` deve essere declassato; se non lo recupera e i controlli cross-dominio separano, il frame matura."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0637.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "G1: observables_used=[] su tensione strutturale."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260514_1656.md:16:- reasoning: La riparazione L6 richiesta dall'operatore e' stata completata senza cambiare contenuto scientifico: Bridge QA clean, health completed, e il verdict resta correttamente CONSTRAINT / FIT-READY TESTER. Non emerge una nuova dipendenza dall'operatore: il residuo era formale/contrattuale ed e' stato chiuso nel nodo regressivo del report. Il seme e' gia' avanzato a piano 125 con direzione viva sul confine GUE/Poisson, quindi il passo successivo e' riprendere il flusso sperimentale.
tools/data/repairs/repair_20260514_1640_decision.json:1:{"cycle_ts": "20260514_1640", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1640", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1640.md", "exists": true, "title": "Agent Report - Rafforzamento tester fisico GOE/GUE N-curve", "size": 12465}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1640.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente rispetto alle 8 lenti: non formula hard constraint falsificati dai dati visibili, dichiara non_possible, metabolizza CE/KSAR, cita baseline note e mantiene aderenza alla direzione GOE/GUE/Poisson-Anderson.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_164509.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_164509.json", "rho": 0.9325, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "medium", "reasoning": "Il ciclo ha rafforzato il tester senza promuoverlo a legge: Bridge QA clean, health completed, e il claim resta correttamente vincolato come strumento operativo. La prossima mossa deve continuare il frame ma spostare la falsificazione fuori dal dettaglio locale GOE/GUE a un denominatore fisico piu' duro, usando il nodo regressivo indicato dall'Affinatore: contratto pre-run esplicito su trace_path, evidence_tier e autopsy.", "action_type": "trigger_cycle", "detail": {"direction": "Continuare il tester component_state(SR,L1,triple_var) su falsificazione fisica esterna: Anderson 3D o many-body/localizzazione, con contratto pre-run esplicito trace_path/evidence_tier/autopsy; vietato promuovere a legge fisica o accumulare solo N-curve GOE/GUE.", "constraints": ["mantenere GOE/GUE/Poisson come baseline, non come nuovo oggetto principale", "testare almeno un denominatore fisico non gia' coperto dal ciclo 16:40", "dichiarare non_possible prima dell'esecuzione", "includere shuffle/surrogato o baseline strutturale equivalente"]}, "notes": "Non cristallizzare ancora: il tester e' leggibile ma non ha superato abbastanza domini esterni. Non REDESIGN pieno perche' la direzione fisica resta viva; va solo spinta fuori dal rinforzo locale."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1640.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_2121_decision.json:1:{"cycle_ts": "20260508_2121", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_2121", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_2121.md", "exists": true, "title": "Agent Report - Prime Mobius Gap-Stratified Zero Gate", "size": 9383}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_2121.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente rispetto alle lenti applicate: nessuna hard prohibition non supportata, nessun cambio silenzioso di definizione, nessun edge case arrotondato via, e la contaminazione cognitiva e' metabolizzata con voci CE/KSAR/PVI esplicite.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_212526.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 14, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_212526.json", "rho": 0.9325, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha isolato un vincolo utile: low-low e high-high cadono sotto null stratificato per lunghezza, mentre SR resta stabilmente fuori null su main e seedcheck. Non c'è dipendenza dall'operatore: la consecutio naturale è testare se il residuo SR è specifico dello zero Mobius o se il null stratificato va trasferito al frame GUE/Poisson della direzione corrente.", "action_type": "trigger_cycle", "detail": {"focus": "seguire il residuo sr_zero_minus_nonzero oppure trasferire il null length-stratified al confine GUE/Poisson", "constraint": "non promuovere low/high come segnale autonomo; trattarli come assorbiti dal denominatore lunghezza", "suggested_question": "SR resta vincolo di forma dello zero Mobius sotto null piu' duro, o e' un effetto del rapporto min/max conservato indirettamente dalla stratificazione?"}, "notes": "Mantenere lo stesso frame: il ciclo ha prodotto discriminazione strutturale, non solo dettaglio numerico locale."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_2121.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/notte_20260307_0330.md:4:  ising_2d_var_-0.1: r=0.9382984570853047, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260307_0330.md:5:  ising_2d_var_0.1: r=0.9960177272989545, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260307_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260307_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260307_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260307_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260307_0330.md:10:  brownian_motion_var_0.3: r=1.0452114730189597, spacing=Poisson-like (⟨r⟩=0.38632962481082495)
tools/data/notte_20260307_0330.md:11:  brownian_motion_var_0.5: r=1.0, spacing=Poisson-like (⟨r⟩=0.38653838880191393)
tools/data/notte_20260307_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260307_0330.md:13:  percolation_var_0.55: r=1.0384615384615385, spacing=Poisson-like (⟨r⟩=0.44398759377600533)
tools/data/notte_20260307_0330.md:14:  percolation_var_0.65: r=0.9642857142857143, spacing=Poisson-like (⟨r⟩=0.44981595361822824)
tools/data/notte_20260307_0330.md:44:## Fase 4: Cross-domain
tools/data/evolution/evolution_20260508_2140.md:3:Ho mantenuto il focus sul passo: inversione da fit power-law a gate di bordo, attrito tecnico dell’autopsy senza jsonl, e nodo regressivo metodologico nel null random non omogeneo rispetto al boundary operator `V_c`.
tools/data/repairs/repair_20260509_0652_decision.json:1:{"cycle_ts": "20260509_0652", "decision": "APPLY_REPAIR", "should_rerun": true, "reasons": ["falsifier_high_1"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260509_0652", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0652.md", "exists": true, "title": "Agent Report - Vc Label-Preserving Swap Gate", "size": 10370}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0652.json", "exists": true, "coherent": false, "summary": "Il report e' coerente nel falsificare la sufficienza del label-set, ma rompe L4/L7 quando trasforma una differenza di stabilita' in un 'solo' quasi esclusivo dell'ordine Sturmian.", "counts": {"high": 1, "medium": 2, "low": 0}, "flags": [{"lens": "L4", "severity": "high", "claim": "\"il crossing interno unico resta solo quando l'ordine generativo resta Sturmian\"", "suggestion": "Riformulare come: \"nel perimetro osservato, solo Sturmian mantiene internal_cross uniforme su tutte le condizioni; i null non-Sturmian possono produrre internal_cross ma non lo stabilizzano\"."}, {"lens": "L5", "severity": "medium", "claim": "\"il label-set e' lettore, non portatore sufficiente\" / \"serve ordine generativo\"", "suggestion": "Nel prossimo ciclo aggiungere una riga di audit classico: confrontare con gap-labelling theorem per operatori quasi-periodici/Sturmian-Harper e distinguere cosa e' nuovo nel null swap rispetto a cio' che e' gia noto."}, {"lens": "L7", "severity": "medium", "claim": "\"serve ordine generativo\"", "suggestion": "Aggiungere un failure mode esplicito: \"ordine generativo\" significa stabilita' 12/12 internal_cross e 0 multi/floor su phase x threshold; singoli internal_cross non-Sturmian non contano come trasporto del boundary."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_065842.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_065842.json", "rho": 0.895, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha prodotto una falsificazione strutturale utile: il label-set preservato non basta a ricostruire il boundary `V_c` nel perimetro N=89. Non serve fermare l'operatore: la consecutio e' gia' indicata dal deposito, cioe' riparare il null al nodo generativo e distinguere phase-shuffle Sturmian da surrogate label-preserving prima di estendere a GUE/Poisson.", "action_type": "trigger_cycle", "detail": {"focus": "Stesso frame `V_c` null regressivo: confrontare Sturmian phase-shuffle e surrogate label-preserving con gate raggiunto, includendo N>=144 solo dopo aver reso accettabile il generatore del null.", "reason": "Il run largo ha fallito l'accettazione Jaccard; il prossimo ciclo deve correggere il contratto di generazione del surrogate, non saltare al dominio esterno."}, "notes": "Non cristallizzare ancora: il verdict e' forte ma perimetrato a N=89 e dipende dal gate Jaccard/accettazione."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0652.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "Falsifier: HIGH flags. Report non sincronizzato."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": "/opt/MM_D-ND/tools/data/repairs/repair_20260509_0652.json", "record_md": "/opt/MM_D-ND/tools/data/repairs/repair_20260509_0652.md"}
tools/data/repairs/repair_20260513_0330_decision.json:1:{"cycle_ts": "20260513_0330", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260513_0330", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260513_0330.md", "exists": true, "title": "Agent Report - Prime vs Mod6 SR Boundary", "size": 8513}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260513_0330.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente sulle 8 lenti: nessun hard-zero falso, cambio di scope dichiarato, contaminazione cognitiva esplicita, non-possibile presente e aderenza alla direzione dichiarata.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260513_033605.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260513_033605.json", "rho": 0.9517, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha falsificato la forma binaria `SR prime-specific`: `SR` compare anche nel pre-bordo `6k +/- 1`, mentre la selezione prime resta solo come gradiente di intensita residua. Il seme ora devia verso un frame largo GUE/Poisson, ma la consecutio viva e' nel nodo regressivo appena emerso: sottrarre mod6 e misurare cosa resta della selezione prime, con tracciamento fine del contratto osservabile.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Isolare il residuo prime-specific dopo sottrazione del pre-bordo mod6: misurare intensita row-local di SR/L1/triple_var su prime vs 6k+/-1 con trace JSONL completa e label-swap audit.", "reason": "La presenza binaria di SR e' falsificata come firma dei primi; il prossimo ciclo deve testare il residuo di selezione, non riaprire un frame largo GUE/Poisson."}, "notes": "Side-effect log-only: proposta modifica seme. Non richiede STOP_FOR_REVIEW perche' non c'e' dipendenza dall'operatore; richiede solo riallineamento della prossima mossa al nodo regressivo."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260513_0330.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:2:  "experiment": "aubry_cosine_boundary_counter_gate",
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:4:    "out": "tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json",
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1749:    "phi_joint_boundary_v": [],
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1772:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1791:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1810:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1829:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1848:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1867:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1886:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1905:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1924:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1943:        "phi_joint_boundary": false
tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json:1962:        "phi_joint_boundary": false
tools/data/evolution/evolution_20260506_0330.md:3:Sintesi: passo netto, autologico (ha falsificato il proprio risultato precedente). Attrito minimo (GUE piccolo per default ereditato, autopsy con testo stale). Possibilità forte: la dimensionalità perturbativa come nuovo invariante di dominio, incrociabile con la struttura modulare.
tools/data/repairs/repair_20260508_2102.json:64:        "focus": "Ripetere il gate aligned/misaligned/zero su low-low, high-high e SR con null di permutazione che preservi frequenza degli zeri; verificare se lo zero e' rumore, boundary o mediatore del segnale.",
tools/data/boundary_coherence.json:2:  "GUE_reference": {
tools/data/boundary_coherence.json:18:  "Poisson_reference": {
tools/data/repairs/repair_20260509_0846_decision.json:1:{"cycle_ts": "20260509_0846", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260509_0846", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0846.md", "exists": true, "title": "Agent Report - Vc Generator Class Direction Audit", "size": 10230}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0846.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente rispetto alle 7 lenti: il perimetro e' dichiarato, gli zeri sono supportati dai conteggi visibili, l'edge case order_memory e' esplicitato e la controparte non_possible e' presente.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_085203.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_085203.json", "rho": 0.985, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha chiuso il vincolo sul denominatore di V_c senza gap di estrazione e senza nodo regressivo; l'affinatore ha gia' spostato il seme al piano 102 verso il confine GUE/Poisson. Dopo due REDESIGN e una CRYSTALLIZE, la traiettoria non richiede altra interferenza: la prossima mossa deve testare se il confine come terzo incluso operativo regge cross-dominio, non riaprire il frame V_c.", "action_type": "trigger_cycle", "detail": {"direction": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo", "reason": "proseguire sul seme gia' avanzato e verificare pattern cross-dominio invece di accumulare dettaglio locale sul deposito V_c"}, "notes": "Modo log-only: registra l'intenzione di avviare il prossimo ciclo sul piano 102; nessuna dipendenza dall'operatore."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0846.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260514_0330_decision.json:1:{"cycle_ts": "20260514_0330", "decision": "SKIP", "should_rerun": false, "reasons": ["aeternitas_VETO"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": true}, "signals": {"cycle_ts": "20260514_0330", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_0330.md", "exists": true, "title": "Agent Report - Prime vs Mod6 SR Boundary Trace", "size": 6904}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_0330.json", "exists": true, "coherent": false, "summary": "Il report e quasi coerente, ma L4 si rompe: formula `SR` come appartenente al pre-bordo mentre un controllo mod6 visibile ha 1/8 controesempio.", "counts": {"high": 1, "medium": 0, "low": 1}, "flags": [{"lens": "L4", "severity": "high", "claim": "`SR` appartiene al pre-bordo `6k +/- 1`; `SR` e gia nel lattice candidato `6k +/- 1`", "suggestion": "Riformulare il perimetro: `SR` attraversa il confine nel controllo `mod6_index_aligned`; nel controllo `mod6_span_matched` vale salvo `support_falls`, oppure isolare il caso 1/8 e dichiarare se e artefatto del downsample o controesempio strutturale."}, {"lens": "L5", "severity": "low", "claim": "La primalita non genera `SR`; seleziona dentro un lattice gia rigido e lascia un residuo misurabile come delta z row-local.", "suggestion": "Nel prossimo ciclo aggiungere un baseline esplicito: confrontare `prime_minus_mod6_z_delta` contro aspettative note sui prime gaps mod q, o dichiarare che il finding e operativo-locale e non una nuova legge sui residui dei primi."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_033420.json", "decision": "VETO", "reason": "P1 (Integrità): 1 violazioni", "p0_passed": true, "p1_passed": false, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 10, "new_count": 10}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_033420.json", "rho": 0.6358, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha falsificato la presenza binaria di `SR` come prime-specific, ma ha lasciato vivo un residuo strutturale nell'intensita row-local dopo sottrazione mod6: `p(SR delta)=1.0000` mentre `p(z_SR delta)≈0.008-0.009` replica su due seed. Dopo tre REDESIGN consecutivi, la traiettoria non chiede un nuovo cambio di frame: chiede di seguire la consecutio gia nominata dall'Affinatore, `SR_residual_intensity_after_mod6`, verificando se il delta z e' robusto o artefatto del contratto di finestra/deposito.", "action_type": "trigger_cycle", "detail": {"direction": "Seguire `SR_residual_intensity_after_mod6`: testare la robustezza del delta z row-local prime-minus-mod6 su piu seed, ampiezze finestra e provider, mantenendo label-swap audit e trace JSONL completa.", "constraints": ["non tornare a claim binario `SR prime-specific`", "non allargare a GUE/Poisson o beta atlas globale", "controllare se z_SR dipende da normalizzazione, finestra o denominatore mod6"]}, "notes": "Side-effect log-only: propone continuazione del ciclo, non modifica automatica del seme."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_0330.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "Falsifier: HIGH flags. Report non sincronizzato. Endpoint lab fallito."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_1834_decision.json:1:{"cycle_ts": "20260508_1834", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_1834", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_1834.md", "exists": true, "title": "Agent Report — Substitution Grammar Gate Del Core Phi", "size": 8813}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_1834.json", "exists": true, "coherent": false, "summary": "Il report e' parzialmente coerente: L3 si rompe per drift tra gap_ratio dichiarato e label-set testato, e L1 richiede di limitare lo zero al core alto completo, non ai label alti residui.", "counts": {"high": 0, "medium": 2, "low": 1}, "flags": [{"lens": "L3", "severity": "medium", "claim": "Claim Under Test: \"Cosa manca per confermare completamente gap_ratio...\"; Verdict: \"CONSTRAINT on TRASCENDENZA_LIMITE / QPG_GAP_RATIO_DENOMINATOR_GATE\"", "suggestion": "Riformulare: \"gap_ratio non valutato; questo ciclo testa solo il label-set gate. QPG_GAP_RATIO_DENOMINATOR_GATE resta aperto finche' gap_ratio viene misurato nello stesso perimetro\"."}, {"lens": "L1", "severity": "medium", "claim": "\"il core alto [3, -4, 4, 6] non e' portato da lunghezza e conteggio del blocco\"", "suggestion": "Separare hard constraint e residuo: \"lunghezza/conteggio non portano il core alto completo: all-high=0/320; resta una retention alta residua 0.25 da spiegare\"."}, {"lens": "L4", "severity": "low", "claim": "\"distruggere l'ordine interno del blocco collassa il core al livello random\"", "suggestion": "Nel prossimo ciclo isolare il label `34`: verificare se e' boundary artifact di `|n|<=34`, leakage del reader, o label valido fuori core; non includerlo implicitamente nel profilo random senza nota."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_183856.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 19, "new_count": 19}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_183856.json", "rho": 0.8875, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "medium", "reasoning": "Il ciclo ha prodotto un vincolo strutturale utile: il core phi non misura solo lunghezza di blocco, perche' collassa quando l'ordine interno viene distrutto. Pero' e' il quarto NEXT_CYCLE consecutivo nello stesso frame locale e il perimetro resta su lettore phi/generator phi senza gap_ratio, non-phi Sturmian o cross-dominio; secondo la regola anti-tautologica il deep-dive locale ha raggiunto rendimento decrescente. La mossa successiva deve portare il vincolo su un discriminatore strutturale piu' largo, coerente col seme attuale sul confine GUE/Poisson.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Testare se il gate del core phi trasferisce come discriminatore di confine su domini GUE/Poisson: ordine interno conservato vs distrutto, con controlli shuffle e generatori non-phi", "reason": "Porta il finding dal dominio locale della grammatica Sturmiana al filtro STRUTTURA/rumore richiesto dal telos, evitando accumulo numerico sul solo phi_sturmian."}, "notes": "Nel prossimo ciclo: usare il risultato appena ottenuto come vincolo, non come claim; includere almeno un controllo non-phi e un confronto GUE/Poisson. gap_ratio resta not_tested e va trattato come osservabile sospeso, non confermato."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_1834.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260509_1839_decision.json:1:{"cycle_ts": "20260509_1839", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260509_1839", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_1839.md", "exists": true, "title": "Agent Report - Boundary Transition Taxonomy 13 Rows", "size": 9429}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_1839.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente sulle 8 lenti: hard constraint limitato a thin_persist_rows=0/13, count assoluti presenti, non_possible dichiarato, contaminazione cognitiva metabolizzata e aderenza alla direzione esplicitata.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_184434.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_184434.json", "rho": 0.9325, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha prodotto una chiusura locale utile senza contraddizione: `thin_persist_rows=0` dissolve la specie `blank_thin_support` sul perimetro 13 righe, ma lascia due residui medio/forti senza beta (`numeri_primi:cycle_3`, `random_matrix:cycle_7`). La consecutio naturale non e' redesign: e' testare se quei due blank residui sono stesso operatore di confine, due classi distinte, o artefatto da denominatore/atlante.", "action_type": "trigger_cycle", "detail": {"direction": "BOUNDARY consecutio sui due residui beta-absent medio/forti", "focus_rows": ["numeri_primi:cycle_3", "random_matrix:cycle_7"], "test": "costruire un audit mirato che non rigeneri fit globali e verifichi se il beta-blank residuo sopravvive a controlli row-locali e cross-row", "avoid": ["nuova griglia beta globale", "ritorno a V_c", "uso label GUE/Poisson come decision field"]}, "notes": "Prossima mossa: isolare il residuo vivo dopo la dissoluzione del thin blank. Se anche questi due blank cadono, la tassonomia BOUNDARY puo' maturare; se divergono, emerge nuova tensione strutturale."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_1839.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260514_1330_decision.json:1:{"cycle_ts": "20260514_1330", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1330", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1330.md", "exists": true, "title": "Agent Report - SR Residual Width Audit", "size": 7748}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1330.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente rispetto ai dati forniti; le 8 lenti non mostrano rotture checkable nel perimetro dichiarato.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_133424.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_133424.json", "rho": 0.885, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "medium", "reasoning": "Il ciclo ha prodotto una direzione viva ma il seme ora devia verso frame GUE/Poisson, mentre l'evidenza appena maturata punta al nodo regressivo del contratto: `verdict()` resta centrato su `has_SR` e il micro-trace e' incompleto. La prossima mossa deve trasformare il residuo `prime_minus_mod6_z_vector(SR,L1,triple_var)` in osservabile dedicato e falsificarlo contro antagonisti piu duri, non riaprire un frame globale gia' a rischio accumulo numerico locale.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Formalizzare e falsificare `prime_minus_mod6_z_vector(SR,L1,triple_var)`: separare il verdict da `has_SR`, rendere obbligatorio il micro-trace JSONL, e testare il vettore row-local contro antagonisti mod6 piu forti e scale oltre 2048 gap.", "reason": "La consecutio del ciclo chiuso non porta a GUE/Poisson ma al nodo regressivo del contratto osservabile/verdict; continuare li' preserva la falsificazione strutturale invece di disperderla."}, "notes": "Side-effect log-only: proposta modifica seme per piano 118."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1330.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260514_1656_decision.json:1:{"cycle_ts": "20260514_1656", "decision": "APPLY_REPAIR", "should_rerun": true, "reasons": ["p5_failed_and_veritas_not_collasso_with_consecutio"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1656", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1656.md", "exists": true, "title": "Agent Report - Repair L6 Fit-Ready Contract", "size": 8640}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1656.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente sulle lenti dure; resta solo una fragilita' L8 terminologica sul modo in cui dichiara la deviazione locale dalla direzione viva.", "counts": {"high": 0, "medium": 0, "low": 1}, "flags": [{"lens": "L8", "severity": "low", "claim": "`relation`: local_regression ... `not_drift`: non torna a `V_c`, primi, fit locali o nuovi domini; opera solo sul contratto gia' prodotto", "suggestion": "Nel prossimo ciclo, se la direttiva forza una regressione locale contro la direzione viva, aggiungere nel contratto: `deliberate_counter_perimeter=true`, `why=<operator directive repair L6>`, `not_drift=<nessun nuovo dominio/promozione>`."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_170109.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_170109.json", "rho": 0.8942, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "La riparazione L6 richiesta dall'operatore e' stata completata senza cambiare contenuto scientifico: Bridge QA clean, health completed, e il verdict resta correttamente CONSTRAINT / FIT-READY TESTER. Non emerge una nuova dipendenza dall'operatore: il residuo era formale/contrattuale ed e' stato chiuso nel nodo regressivo del report. Il seme e' gia' avanzato a piano 125 con direzione viva sul confine GUE/Poisson, quindi il passo successivo e' riprendere il flusso sperimentale.", "action_type": "trigger_cycle", "detail": {"direction": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine e' il terzo incluso operativo", "reason": "Riparazione one-shot conclusa; tornare al frame sperimentale dichiarato dal seme."}, "notes": "Non cristallizzare il tester come legge fisica: usarlo solo come contratto fit-ready per falsifier e graph completion."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1656.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": "/opt/MM_D-ND/tools/data/repairs/repair_20260514_1656.json", "record_md": "/opt/MM_D-ND/tools/data/repairs/repair_20260514_1656.md"}
tools/data/repairs/repair_20260508_1909.json:27:      "summary": "Il report e' coerente nel falsificare il boundary esatto, ma L1/L4 si rompono dove \"nullo/cade\" viene usato per il core alto intero mentre i dati mostrano sopravvivenza parziale per-label.",
tools/data/repairs/repair_20260508_1909.json:78:      "reasoning": "Il ciclo ha falsificato il claim operativo: il confine reale del supertile non batte il taglio contiguo a stessa multiset, mentre lo shuffle interno distrugge il core. L'evidenza sposta il nodo regressivo dal boundary geometrico al contratto osservabile: il portatore e' ordine interno piu' scala lunga, non il taglio esatto del supertile.",
tools/data/repairs/repair_20260508_1909.json:82:        "new_value": "Riformulare il confine come grammatica interna + scala lunga: testare il core phi contro generatori non-phi, fasi e denominatori con controlli shuffle, senza assumere che il boundary esatto del supertile sia il portatore.",
tools/data/repairs/repair_20260508_1909.json:83:        "reason": "Il boundary esatto e' stato controllato e non discrimina; continuare nello stesso frame accumulerebbe dettaglio locale su un claim caduto."
tools/data/repairs/repair_20260509_0330_decision.json:1:{"cycle_ts": "20260509_0330", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260509_0330", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0330.md", "exists": true, "title": "Agent Report - Interpolated Vc Curve Map", "size": 11067}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0330.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente: le lenti hard-zero, ratio, patching, edge-case, rediscovery e metabolismo CE non mostrano rotture checkable nei dati forniti.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_033556.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_033556.json", "rho": 0.985, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha prodotto un vincolo utile ma locale: `V_c` distingue metallici e random solo dentro un osservabile dedicato, con `not_tested` espliciti e nodo regressivo nel null non omogeneo al boundary operator. Saltare subito a GUE/Poisson rischia di lasciare non falsificato il punto vero emerso dall'Affinatore: separare `floor_hit`, crossing interno, phase-shuffle Sturmian e surrogate label-preserving prima di promuovere il confine a dominio spettrale piu' largo.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Falsificare `V_c` sul nodo regressivo del null: separare floor_hit e crossing interno, poi confrontare Sturmian phase-shuffle e surrogate label-preserving prima di estendere a GUE/Poisson.", "reason": "La prossima mossa deve chiudere il controllo strutturale sul boundary operator; l'estensione cross-dominio viene dopo, altrimenti accumula dettaglio numerico locale non ancora ripulito."}, "notes": "Log-only: modifica proposta al seme, nessuna azione eseguita automaticamente."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0330.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/evolution/evolution_20260425_0330.md:1:Report scritto. Sintesi: passo netto, nessun attrito, consecutio rispettata. Il run ha separato due canali di memoria Markov nei primi (algebrico 140x > statistico) e mostrato che l'ordering-GUE ne ha solo uno. Tre possibilità emergenti: saturazione come terzo asse, eterogeneità Poisson come confine del r-test, e falsificazione attiva dell'assenza di canale algebrico nell'ordering-GUE.
tools/data/repairs/repair_20260514_1612_decision.json:1:{"cycle_ts": "20260514_1612", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1612", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1612.md", "exists": true, "title": "Agent Report - Rimbalzo fisico del residuo SR", "size": 8596}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1612.json", "exists": true, "coherent": false, "summary": "Il report e' in gran parte coerente internamente; la lente rotta e' L8 per aderenza alla direzione viva non dimostrata dai file forniti, con un richiamo L5 alla baseline classica non nominata.", "counts": {"high": 0, "medium": 1, "low": 1}, "flags": [{"lens": "L8", "severity": "medium", "claim": "`relation`: deliberate_counter_perimeter; `why`: la direttiva operatore chiede di non proseguire come ottimizzazione locale prime-minus-mod6", "suggestion": "Nel prossimo ciclo, allegare o citare il file `operator_directive.md` se esisteva; altrimenti riformulare come drift deliberato non coperto dal seme e tornare al test richiesto: micro-trace provider-indipendente, min_paired_rows pre-dichiarato, repliche 409..."}, {"lens": "L5", "severity": "low", "claim": "\"Relazione nuova o limite: il run mostra una formulazione fisica del cedimento selettivo\" e \"Formalizza un ponte interrogabile\"", "suggestion": "Esplicitare che il test e' un riuso operativo di statistiche spettrali note, non scoperta fisica: confrontare `SR,L1,triple_var` con baseline standard come adjacent gap ratio / Wigner-Dyson vs Poisson / Anderson localization level statistics."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_161719.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_161719.json", "rho": 0.9267, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha prodotto un rimbalzo fisico reale nel frame GUE/Anderson, con Bridge QA clean e senza nodo regressivo. Non c'e' dipendenza dall'operatore: il limite e' gia' nominato dall'affinatore, cioe' trasformare il proxy numerico in tier di evidenza esplicito concentrandosi sul bordo W=6 dove SR/L1 cedono e triple_var resta attivo.", "action_type": "trigger_cycle", "detail": {"direction": "Continuare nel frame GUE/Anderson, restringendo il prossimo ciclo al perimetro W=6 con evidence_tier esplicito e autopsy lab-native della trace.", "constraints": ["non espandere a deep-dive numerico generico su 8 GUE/5 Poisson", "dichiarare il tier di evidenza prima della misura", "testare se triple_var nomina memoria fisica oltre nearest-neighbor repulsion"]}, "notes": "NEXT_CYCLE non come altro giro locale sui primi, ma come verifica del confine fisico gia' emerso: W=6 e' il punto-zero operativo."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1612.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_2102.md:19:- Focus: Ripetere il gate aligned/misaligned/zero su low-low, high-high e SR con null di permutazione che preservi frequenza degli zeri; verificare se lo zero e' rumore, boundary o mediatore del segnale.
tools/data/repairs/repair_20260508_2133_decision.json:1:{"cycle_ts": "20260508_2133", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_2133", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_2133.md", "exists": true, "title": "Agent Report - Prime Mobius Pair-Stratified Zero Gate", "size": 8473}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_2133.json", "exists": true, "coherent": false, "summary": "Il report e' quasi coerente internamente, ma L1 si rompe sul linguaggio CONSTRAINT: i dati supportano un bias statistico robusto, non un confine duro.", "counts": {"high": 0, "medium": 1, "low": 0}, "flags": [{"lens": "L1", "severity": "medium", "claim": "\"verdict: CONSTRAINT\" / \"CONSTRAINT on Prime Mobius zero-mediator gate\"", "suggestion": "Riformulare il verdict come \"STATISTICAL_RESIDUAL\" o \"PAIR-BUCKET NULL REJECTED for SR_zero_minus_nonzero\"; usare \"CONSTRAINT\" solo se il prossimo ciclo produce un vincolo esatto o una probabilita empirica 0.000 su un perimetro definito."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_213916.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 14, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_213916.json", "rho": 0.9125, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "medium", "reasoning": "Il ciclo ha prodotto un vincolo forte ma ancora locale: SR_zero sopravvive 6/6 al null pair-stratified, mentre low_low e high_high cadono 0/6. La domanda rimasta non e' continuare lo stesso frame numerico, ma attaccare il nodo regressivo dichiarato dal report: il null e' transition-level e non ricostruisce una sequenza Mobius globale coerente, quindi prima di nominare il residuo come portatore serve un null piu' fisico o un trasferimento cross-dominio.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Falsificare il residuo SR_zero Mobius con null globalmente coerente e/o trasferimento cross-dominio GUE/Poisson prima di ogni cristallizzazione", "reason": "Evita quarto deep-dive locale sullo stesso residuo; sposta il prossimo ciclo dal controllo pair-bucket alla verifica strutturale richiesta da C2."}, "notes": "Log-only: nessuna azione automatica eseguita. Prossimo esperimento consigliato: preservare coerenza globale della sequenza Mobius o testare se la firma SR_zero attraversa domini GUE/Poisson senza dipendere dalla geometria coarse dei gap primi."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_2133.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_2102_decision.json:1:{"cycle_ts": "20260508_2102", "decision": "APPLY_REPAIR", "should_rerun": true, "reasons": ["falsifier_high_1"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_2102", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_2102.md", "exists": true, "title": "Agent Report - Prime Mobius Interval-Charge Gate", "size": 8762}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_2102.json", "exists": true, "coherent": false, "summary": "Il report e' internamente quasi coerente, ma si rompe su L3: un elemento dichiarato not_tested viene trasformato in conclusione nel Verdict.", "counts": {"high": 1, "medium": 0, "low": 0}, "flags": [{"lens": "L3", "severity": "high", "claim": "\"non si legge come det diretto\" / observable_contract: \"not_tested=... det(M) as direct discriminator\"", "suggestion": "Nel prossimo ciclo: o rimuovere la frase sul det diretto dal verdict, oppure aggiungere un controllo esplicito con det(M) diretto come discriminatore e confrontarlo contro interval-charge sullo stesso denominatore."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_210742.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_210742.json", "rho": 0.92, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "medium", "reasoning": "Il ciclo ha prodotto un vincolo non locale: la carica Mobius dell'intervallo seleziona low-core e high-tail contro permutazione, mentre SR resta non selezionato. Non e' ancora cristallizzabile perche' il denominatore esclude S=0 e l'Affinatore ha identificato proprio quello come nodo regressivo: il prossimo passo deve testare lo zero come terzo incluso, non cambiare direzione.", "action_type": "trigger_cycle", "detail": {"direction": "Continuare PRIME_MOBIUS_INTERVAL_CHARGE_GATE testando esplicitamente S=0 come classe terza e ripristinando traccia jsonl/autopsy del denominatore.", "focus": "Ripetere il gate aligned/misaligned/zero su low-low, high-high e SR con null di permutazione che preservi frequenza degli zeri; verificare se lo zero e' rumore, boundary o mediatore del segnale.", "reason": "Il risultato attuale e' promettente ma dipende da una esclusione strutturale del terzo incluso."}, "notes": "Niente STOP_FOR_REVIEW: non serve ancora operatore. Niente REDESIGN: la tensione nuova ha prodotto segnale falsificabile e va stressata nel suo nodo regressivo."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_2102.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "Falsifier: HIGH flags. Report non sincronizzato."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": "/opt/MM_D-ND/tools/data/repairs/repair_20260508_2102.json", "record_md": "/opt/MM_D-ND/tools/data/repairs/repair_20260508_2102.md"}
tools/data/repairs/repair_20260511_0330_decision.json:1:{"cycle_ts": "20260511_0330", "decision": "SKIP", "should_rerun": false, "reasons": ["aeternitas_VETO"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": true}, "signals": {"cycle_ts": "20260511_0330", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260511_0330.md", "exists": true, "title": "Agent Report - Prime Persistent Blank Gate", "size": 7288}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260511_0330.json", "exists": true, "coherent": false, "summary": "Il report e' parzialmente coerente, ma L4 si rompe: chiama persistente il supporto mentre i dati dichiarano un caso `support_falls`; L8 resta una deviazione non completamente esplicitata dalla direzione viva.", "counts": {"high": 1, "medium": 1, "low": 0}, "flags": [{"lens": "L4", "severity": "high", "claim": "`numeri_primi:cycle_3` conserva supporto one-sided `SR` attraverso provider e offset; la coordinata beta resta locale e ricompare in 4/8 finestre.", "suggestion": "Separare formalmente `SR_present=8/8` da `support_state_persistent=7/8`; riformulare il claim come `SR observable persists, but support-state persistence fails in 1/8` oppure definire perche' `support_falls` non invalida il supporto SR."}, {"lens": "L8", "severity": "medium", "claim": "`relation`: follows_direction; `why`: testa direttamente `prime_persistent_blank` su `numeri_primi:cycle_3` con provider-neutral row-local windows e controlli cross-dominio.", "suggestion": "Nel prossimo ciclo dichiarare esplicitamente se `prime_persistent_blank` e' contro-perimetro deliberato della direzione GUE/Poisson, oppure tornare al perimetro richiesto con 8 GUE e 5 Poisson come domini principali."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260511_033441.json", "decision": "VETO", "reason": "P1 (Integrità): 1 violazioni", "p0_passed": true, "p1_passed": false, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 11, "new_count": 11}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260511_033441.json", "rho": 0.7542, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha falsificato strutturalmente `prime_persistent_blank`: il blank beta non replica, mentre `SR` persiste in tutte le finestre prime e non collassa sui controlli. Continuare sullo stesso nome accumulerebbe una classe caduta; la consecutio viva e' spostare il prossimo ciclo su `prime_SR_persistent_boundary`, separando supporto osservabile e coordinata beta.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Testare `prime_SR_persistent_boundary`: il confine prime non e' persistenza del blank beta, ma persistenza one-sided di SR attraverso provider, offset e controlli cross-dominio.", "reason": "La falsificazione del blank e la persistenza SR indicano il nodo regressivo nel contratto di osservazione, non nel dominio prime.", "promote_tension": "prime_SR_persistent_boundary", "avoid": "non riproporre `prime_persistent_blank` come classe; trattarlo come label falsificata o declassata"}, "notes": "Prossimo esperimento: mantenere provider/offset, ampliare controlli non-prime e chiedere se SR resta firma prime-specific o se e' un effetto del gate."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260511_0330.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "Falsifier: HIGH flags. Report non sincronizzato."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260512_0330_decision.json:1:{"cycle_ts": "20260512_0330", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260512_0330", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260512_0330.md", "exists": true, "title": "Agent Report - Prime SR Persistent Boundary", "size": 8177}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260512_0330.json", "exists": true, "coherent": false, "summary": "Il report è quasi coerente internamente, ma L8 segnala drift rispetto alla direzione strutturale GUE/Poisson e L5 richiede ancoraggio al risultato classico più vicino sui residui/gap modulo q.", "counts": {"high": 0, "medium": 1, "low": 1}, "flags": [{"lens": "L5", "severity": "low", "claim": "`SR` misura una memoria d'ordine aritmetica che i primi condividono con un contro-perimetro mod6 in alcune repliche.", "suggestion": "Nel prossimo ciclo aggiungere un controllo `known_nearest_result` per mod6/modq: wheel factorization + Lemke Oliver-Soundararajan / prime-gaps residue biases; formulare il claim come discriminazione operativa locale, non come scoperta strutturale nuova."}, {"lens": "L8", "severity": "medium", "claim": "`relation`: follows_direction; `why`: testa direttamente la direzione viva `prime_SR_persistent_boundary`.", "suggestion": "Esplicitare se `prime_SR_persistent_boundary` è una sotto-direzione autorizzata dal campo vivo; altrimenti nel prossimo ciclo riallineare il contratto a 8 domini GUE / 5 Poisson oppure dichiarare `deliberate_counter_perimeter` con `why` e `not_drift` verifi..."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260512_033539.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 11, "new_count": 10}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260512_033539.json", "rho": 0.9075, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha falsificato la forma atomica `prime_SR_persistent_boundary`: nei primi SR non chiude 8/8 e l'intersezione comune e' vuota, mentre il seed check mostra `mod6_candidates` con SR pieno e firma comune `L1,SR,triple_var`. L'attrito non e' nel numero di controlli ma nel denominatore: il perimetro largo mescola generatori che non interrogano lo stesso pre-bordo, quindi il prossimo ciclo deve isolare il confine primi/mod6 invece di continuare il frame GUE/Poisson.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Isolare `prime_vs_mod6_SR_boundary`: testare se SR appartiene ai primi o al pre-bordo aritmetico mod6, con controlli stretti label-preserving e shuffle audit sul denominatore row-local.", "reason": "La consecutio viva e' la collisione prime/mod6; continuare sul frame generico 8 GUE / 5 Poisson accumula dettaglio locale e rischia tautologia di controllo."}, "notes": "Non cristallizzare ancora: il risultato e' una falsificazione della specificita' prime, ma serve un ciclo stretto prime-vs-mod6 per decidere se va nel cimitero come claim X nuovo o rientra come firma di pre-bordo aritmetico."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260512_0330.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_2013.json:50:          "suggestion": "Separare il constraint: 'CONSTRAINT on TRASCENDENZA_LIMITE / OSTROWSKI_BOUNDARY_GATE'; lasciare `QPG_GAP_RATIO_DENOMINATOR_GATE` fuori dal verdict o marcarlo come parent non testato."
tools/data/repairs/repair_20260508_2013.json:78:      "reasoning": "Il ciclo ha chiuso anche il gate globale Ostrowski: high-core aligned non batte il misaligned su distanza boundary ne' su firma Zeckendorf, quindi il boundary esatto del supertile non e' portatore rilevato neppure al piano della numerazione globale. Dopo tre giri consecutivi sullo stesso frame con vincoli negativi coerenti, continuare sulla stessa TRASCENDENZA_LIMITE produce dettaglio locale e rischia accumulo anti-tautologico sterile; la traiettoria deve tornare al confine cross-dominio dichiarato nel seme.",
tools/data/repairs/repair_20260508_2013.json:82:        "new_value": "Tornare al confine cross-dominio: testare il boundary come terzo incluso operativo su 8 domini GUE e 5 Poisson, usando lo stesso contratto aligned/misaligned ma fuori dal generatore phi-Sturmian",
tools/data/repairs/repair_20260508_2013.json:85:      "notes": "Promuovere una tensione nuova: se il boundary non vive nel supertile, verificare se vive come discriminante fra domini spettrali GUE/Poisson. Non cristallizzare ancora: il risultato attuale e' vincolo robusto, ma il suo valore dipende dal test fuori-dominio."
tools/data/repairs/repair_20260514_1605_decision.json:1:{"cycle_ts": "20260514_1605", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1605", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1605.md", "exists": true, "title": "Agent Report - Limite di scala prime-minus-mod6", "size": 7707}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1605.json", "exists": true, "coherent": false, "summary": "Il report e' internamente coerente sui dati principali, ma si rompe su L8 per drift rispetto alla direzione viva e su L5 per mancato ancoraggio al risultato classico piu' vicino.", "counts": {"high": 0, "medium": 1, "low": 1}, "flags": [{"lens": "L5", "severity": "low", "claim": "\"Bicono della scoperta\" / \"separare il vettore in strato robusto (L1,triple_var) e strato boundary-sensitive (SR)\" su prime gaps mod 6.", "suggestion": "Nel prossimo ciclo aggiungere sezione nearest_known: confrontare SR,L1,triple_var contro un modello LOS/HL mod q o dichiarare esplicitamente che il claim e' solo operativo sul pipeline-null, non scoperta matematica nuova."}, {"lens": "L8", "severity": "medium", "claim": "\"relation: follows_direction\" e \"not_drift: non torna a V_c, fit, label locali o GUE/Poisson; misura esclusivamente il limite del vettore prime-minus-mod6.\"", "suggestion": "Riformulare aderenza come deliberate_counter_perimeter con why/not_drift verificabili, oppure collegare prime-minus-mod6 al confine GUE/Poisson tramite un ponte misurabile nel prossimo ciclo."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_161058.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_161058.json", "rho": 0.96, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha prodotto evidenza strutturale utile: replica completa a 4096/8192 e primo cedimento selettivo di `SR` a 16384 contro `mod6_span_matched` con denominatore valido. Il seme ora devia verso un frame GUE/Poisson ampio, ma la traiettoria viva e' il limite di scala del vettore prime-minus-mod6: va chiuso il nodo regressivo tra componente scalante (`L1`,`triple_var`) e componente assorbita dal contro-bordo (`SR`) prima di cambiare dominio.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Formalizzare il cedimento selettivo del vettore prime-minus-mod6: separare `SR` come componente assorbita dal contro-bordo span-matched e verificare se `L1,triple_var` restano residuo prime-specific oltre 16384 con trace/autopsy leggibile.", "reason": "La direzione GUE/Poisson salta di dominio mentre il ciclo ha appena localizzato una rottura strutturale interna con denominatore valido; il prossimo passo deve falsificare la decomposizione del vettore, non accumulare un nuovo frame."}, "notes": "Non cristallizzare ancora: il vettore completo e' caduto oltre 8192, ma la sostituzione matura solo dopo un test mirato sulla decomposizione `SR` vs `L1,triple_var` e sulla lacuna autopsy `completed_no_jsonl`."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1605.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_1909_decision.json:1:{"cycle_ts": "20260508_1909", "decision": "APPLY_REPAIR", "should_rerun": true, "reasons": ["p5_failed_and_veritas_not_collasso_with_consecutio"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_1909", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_1909.md", "exists": true, "title": "Agent Report - Supertile Tiling Gate Del Core Phi", "size": 9634}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_1909.json", "exists": true, "coherent": false, "summary": "Il report e' coerente nel falsificare il boundary esatto, ma L1/L4 si rompono dove \"nullo/cade\" viene usato per il core alto intero mentre i dati mostrano sopravvivenza parziale per-label.", "counts": {"high": 0, "medium": 2, "low": 1}, "flags": [{"lens": "L1", "severity": "medium", "claim": "\"same_count_internal_shuffle resta nullo su tutti gli order\" / \"Il core alto cade solo quando l'ordine interno viene distrutto (0/160)\"", "suggestion": "Riformulare: \"same_count_internal_shuffle azzera l'all-high rate del core alto completo, ma lascia sopravvivere singoli label ad alta scala; prossimo ciclo separi all-high, per-label retention e stable-label count\"."}, {"lens": "L4", "severity": "medium", "claim": "\"il core alto cade solo quando l'ordine interno viene distrutto\"", "suggestion": "Isolare l'edge case per label: verificare quali tra [3,-4,4,6] sopravvivono sotto internal shuffle e dichiarare il perimetro come \"core completo cade\", non \"core alto cade\"."}, {"lens": "L5", "severity": "low", "claim": "\"il label-set alto phi misura una condizione congiunta di ordine interno e lunghezze Fibonacci-like\"", "suggestion": "Nel prossimo ciclo aggiungere baseline teorica: confrontare i label osservati con il gruppo di gap-labeling atteso per Sturmian/Fibonacci e separare novita' D-ND da re-discovery spettrale classica."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_191516.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 19, "new_count": 15}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_191516.json", "rho": 0.8875, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha falsificato il claim operativo: il confine reale del supertile non batte il taglio contiguo a stessa multiset, mentre lo shuffle interno distrugge il core. L'evidenza sposta il nodo regressivo dal boundary geometrico al contratto osservabile: il portatore e' ordine interno piu' scala lunga, non il taglio esatto del supertile.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Riformulare il confine come grammatica interna + scala lunga: testare il core phi contro generatori non-phi, fasi e denominatori con controlli shuffle, senza assumere che il boundary esatto del supertile sia il portatore.", "reason": "Il boundary esatto e' stato controllato e non discrimina; continuare nello stesso frame accumulerebbe dettaglio locale su un claim caduto."}, "notes": "Non serve STOP_FOR_REVIEW: la falsificazione e' chiara e non richiede scelta dell'operatore. Il prossimo ciclo deve attaccare trasferibilita' cross-generatore/cross-dominio, non raffinare solo soglie o gap label locali."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_1909.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": "/opt/MM_D-ND/tools/data/repairs/repair_20260508_1909.json", "record_md": "/opt/MM_D-ND/tools/data/repairs/repair_20260508_1909.md"}
tools/data/repairs/repair_20260508_2013_decision.json:1:{"cycle_ts": "20260508_2013", "decision": "APPLY_REPAIR", "should_rerun": true, "reasons": ["falsifier_high_1"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_2013", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_2013.md", "exists": true, "title": "Agent Report - Ostrowski Recognizability Gate Del Core Phi", "size": 10109}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_2013.json", "exists": true, "coherent": false, "summary": "Il report e' parzialmente coerente, ma L4 si rompe: il verdict dice che aligned non batte misaligned sugli hit seedcheck mentre i dati mostrano un controesempio piccolo ma non nullo.", "counts": {"high": 1, "medium": 1, "low": 1}, "flags": [{"lens": "L4", "severity": "high", "claim": "\"Il high-core aligned non batte il same-length misaligned in ... hit entro 2 siti (... `195/563` vs `189/551` seedcheck)\"", "suggestion": "Riformulare: 'nel seedcheck aligned supera misaligned sugli hit entro 2 di 0.0034, scarto sotto soglia operativa; la non-separazione richiede una soglia/effect size predefinita o bootstrap/permutation test'."}, {"lens": "L2", "severity": "medium", "claim": "\"Order 8 favorisce misaligned negli hit (`60/139` vs `44/132`), order 9 e' quasi pari, order 10 ha stessa distanza mediana `21.0`, order 11 resta quasi pari (`35.0` vs `34.0`)\"", "suggestion": "Nel prossimo ciclo riportare differenza assoluta di hit, differenza di proporzione con CI/permutation test, e una soglia ex ante per 'quasi pari' o 'favorisce'."}, {"lens": "L3", "severity": "low", "claim": "\"CONSTRAINT on TRASCENDENZA_LIMITE / QPG_GAP_RATIO_DENOMINATOR_GATE\" insieme a \"`gap_ratio` non e' testato\"", "suggestion": "Separare il constraint: 'CONSTRAINT on TRASCENDENZA_LIMITE / OSTROWSKI_BOUNDARY_GATE'; lasciare `QPG_GAP_RATIO_DENOMINATOR_GATE` fuori dal verdict o marcarlo come parent non testato."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_201917.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 14, "new_count": 14}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_201917.json", "rho": 0.8575, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha chiuso anche il gate globale Ostrowski: high-core aligned non batte il misaligned su distanza boundary ne' su firma Zeckendorf, quindi il boundary esatto del supertile non e' portatore rilevato neppure al piano della numerazione globale. Dopo tre giri consecutivi sullo stesso frame con vincoli negativi coerenti, continuare sulla stessa TRASCENDENZA_LIMITE produce dettaglio locale e rischia accumulo anti-tautologico sterile; la traiettoria deve tornare al confine cross-dominio dichiarato nel seme.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Tornare al confine cross-dominio: testare il boundary come terzo incluso operativo su 8 domini GUE e 5 Poisson, usando lo stesso contratto aligned/misaligned ma fuori dal generatore phi-Sturmian", "reason": "Il gate locale, grammaticale e Ostrowski sul supertile phi e' vincolo negativo stabile; il prossimo passo utile e' falsificazione strutturale cross-dominio, non un altro lettore interno allo stesso dominio."}, "notes": "Promuovere una tensione nuova: se il boundary non vive nel supertile, verificare se vive come discriminante fra domini spettrali GUE/Poisson. Non cristallizzare ancora: il risultato attuale e' vincolo robusto, ma il suo valore dipende dal test fuori-dominio."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_2013.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "Falsifier: HIGH flags. Report non sincronizzato."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": "/opt/MM_D-ND/tools/data/repairs/repair_20260508_2013.json", "record_md": "/opt/MM_D-ND/tools/data/repairs/repair_20260508_2013.md"}
tools/data/repairs/repair_20260509_0829_decision.json:1:{"cycle_ts": "20260509_0829", "decision": "SKIP", "should_rerun": false, "reasons": ["aeternitas_VETO"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": true}, "signals": {"cycle_ts": "20260509_0829", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0829.md", "exists": true, "title": "Agent Report - Vc Memory Crossing Gradient", "size": 9820}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0829.json", "exists": true, "coherent": false, "summary": "Il report non e' pienamente coerente: si rompe soprattutto L3, perche' il claim 'label alto ma crossing cade' combina candidate gate e event audit senza dimostrare che siano lo stesso insieme di righe.", "counts": {"high": 1, "medium": 2, "low": 0}, "flags": [{"lens": "L3", "severity": "high", "claim": "Quando `label_jaccard` resta alto ma `internal_cross` cade / `periodic_approximant_21` ha `no_cross=9/12` pur avendo `96` candidati accettati.", "suggestion": "Nel prossimo ciclo emettere una tabella row-aligned: per ogni candidato accettato con `label_jaccard>=0.75`, riportare `event_type`. Se i 96 accettati non sono le stesse 12 righe evento, riformulare: il claim non e' ancora 'label alto ma crossing cade', ma..."}, {"lens": "L4", "severity": "medium", "claim": "`event_type=internal_cross` sopravvive al block shuffle lungo.", "suggestion": "Limitare il perimetro a `block_shuffle_21/34/45` oppure aggiungere audit eventi per `block_shuffle_27/37`. Non generalizzare a 'block shuffle lungo' se alcuni modi accettati non sono testati sul crossing."}, {"lens": "L2", "severity": "medium", "claim": "Random e Markov restano dispersione: Balanced random accetta `0/512`; Markov-density accetta `0/384`.", "suggestion": "Riportare count grezzi affiancati da stessa unita' operativa: numero di candidati sopra gate per trial count uguale, oppure distribuzione di `label_jaccard`, `hamming_ratio`, `event_type` su campioni pareggiati."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_083335.json", "decision": "VETO", "reason": "P1 (Integrità): 1 violazioni", "p0_passed": true, "p1_passed": false, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_083335.json", "rho": 0.7675, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha prodotto un vincolo strutturale: `label_jaccard` e `internal_cross` non sono lo stesso osservabile, perché gli approximant periodici conservano vocabolario topologico senza garantire crossing. Continuare con altra griglia locale accumulerebbe dettaglio numerico sullo stesso perimetro N=144; la prossima mossa deve spostare il contratto a monte, tipizzando i generatori prima della scansione.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Tipizzare i generatori del boundary prima della scansione: separare memoria d'ordine, chiusura periodica e dispersione random come classi operative; poi testare quali classi co-producono label-set phi e internal_cross fuori dal particolare N=144.", "reason": "La divergenza label-set/crossing mostra che il confine vive nel tipo di generatore, non nella soglia locale di label_jaccard."}, "notes": "Prossimo ciclo: costruire una matrice minima generator_class x observable con almeno N diversi, evitando fit power-law e continuazioni solo su blocchi/periodi attorno a 21/34."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0829.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "Falsifier: HIGH flags. Report non sincronizzato."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260509_0837_decision.json:1:{"cycle_ts": "20260509_0837", "decision": "SKIP", "should_rerun": false, "reasons": ["aeternitas_VETO"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": true}, "signals": {"cycle_ts": "20260509_0837", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0837.md", "exists": true, "title": "Agent Report - Vc Generator Class Scale Gate", "size": 10889}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0837.json", "exists": true, "coherent": false, "summary": "Il report e' parzialmente coerente, ma L2 e L4 si rompono: usa stabilita e rottura del crossing dove i dati mostrano variazione di scala ed eccezioni non isolate.", "counts": {"high": 1, "medium": 2, "low": 1}, "flags": [{"lens": "L2", "severity": "medium", "claim": "periodic_closure conserva label ma produce no_cross su una quota stabile / la separazione trasferisce in scala", "suggestion": "Nel prossimo ciclo separare count assoluti e denominatori: riportare per N `accepted_count`, `no_cross_count`, `internal_cross_count`, e una misura dimensionless stabile come log-odds o mutual information tra `generator_class` ed `event_type` condizionata a N."}, {"lens": "L4", "severity": "medium", "claim": "`order_memory` porta il crossing / `internal_cross` resta stabile quando il generatore conserva ordine aperto", "suggestion": "Riformulare il perimetro come `order_memory produce crossing-or-multi in 830/837 accepted rows; i 7 no_cross vanno isolati per source_mode, N, phase e r_threshold`."}, {"lens": "L4", "severity": "high", "claim": "periodic_closure accetta label ma rompe il crossing", "suggestion": "Specificare il contro-perimetro: `periodic_closure disaccoppia label e crossing in 873/1179 accepted event rows, ma non a N=89 best-per-mode; isolare periodic_21/45/72 e soglie che generano internal_cross`."}, {"lens": "L5", "severity": "low", "claim": "la classe operativa del generatore deve entrare nel contratto boundary", "suggestion": "Prima di promuovere il contratto come scoperta, aggiungere una riga `nearest classical result` con il teorema o famiglia nota piu' vicina: Sturmian words, periodic approximants, factor complexity, symbolic dynamics."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_084507.json", "decision": "VETO", "reason": "P1 (Integrità): 1 violazioni", "p0_passed": true, "p1_passed": false, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_084507.json", "rho": 0.7625, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "CRYSTALLIZE", "confidence": "high", "reasoning": "Verificato dal report: la separazione tra order_memory, periodic_closure e random_dispersion sopravvive su N={89,144,233,377}, con random_dispersion sempre respinta dal gate e periodic_closure capace di preservare label senza crossing. Questo non e' dettaglio numerico locale: corregge il nodo regressivo del gate, separando label_jaccard da event_type e promuovendo generator_class a condizione strutturale del boundary.", "action_type": "crystallize_note", "detail": {"target": "memory", "content": "Nel boundary phi, label preservation non certifica crossing. La classe del generatore e' condizione atomica: order_memory conserva internal_cross, periodic_closure puo' preservare label-set producendo no_cross, random_dispersion non passa il gate label-preserving nel perimetro testato N={89,144,233,377}. Prossimo passo: usare questa cristallizzazione come filtro prima di ogni scansione V_c o QxG, non accumulare nuovi fit su label_jaccard isolato."}, "notes": "Dopo la cristallizzazione, il ciclo successivo dovrebbe uscire dal deep-dive del denominatore e usare il vincolo generator_class/event_type come ponte verso QxG continuo-discreto o verso una falsificazione cross-dominio del boundary."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0837.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": true, "errors": "Falsifier: HIGH flags. Report non sincronizzato."}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260514_1458_decision.json:1:{"cycle_ts": "20260514_1458", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1458", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1458.md", "exists": true, "title": "Agent Report - Prime-minus-mod6 z-vector formalizzato", "size": 8810}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1458.json", "exists": true, "coherent": false, "summary": "Il report e' internamente coerente sulle lenti hard/edge/continuita, ma si rompe su L5: tratta come relazione nuova un pattern in gap dei primi mod 6 senza metabolizzare il riferimento classico piu' vicino.", "counts": {"high": 0, "medium": 1, "low": 0}, "flags": [{"lens": "L5", "severity": "medium", "claim": "\"Relazione nuova: la transizione non vive nella label comune ma nel vettore differenziale\" e verdict come `prime_minus_mod6_z_vector(SR,L1,triple_var)` osservabile del confine.", "suggestion": "Nel prossimo ciclo aggiungere un audit `known_pattern_baseline`: confrontare il vettore contro baseline Lemke Oliver-Soundararajan / bias di residue classes mod q e contro crivello deterministico esplicito; riformulare `nuova` come `nuova nel contratto D-ND..."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_150454.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_150454.json", "rho": 0.95, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo ha confermato il vettore `prime_minus_mod6_z_vector(SR,L1,triple_var)`, ma l'affinatore segnala attrito operativo su `completed_no_jsonl` e denominatore sparse a 4096: prima di cristallizzare serve una ripetizione con contratto pre-run piu' stretto. Il seme corrente punta ancora a frame GUE/Poisson, mentre l'evidenza viva e' nel confine prime-minus-mod6 e nella nuova tensione `TENS_SCALE_TRASCENDENZA_LIMITE`; lasciare il seme cosi' produrrebbe drift rispetto al nodo regressivo emerso.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Formalizzare il limite di scala del vettore prime-minus-mod6: micro-trace provider-indipendente, min_paired_rows pre-dichiarato, replica 4096/8192 e primo test oltre 8192 solo se il denominatore resta stabile", "reason": "Allineare il prossimo ciclo alla tensione nuova e chiudere il gap metodologico prima di promuovere il claim a cristallizzazione."}, "notes": "Non STOP_FOR_REVIEW: non c'e' dipendenza dall'operatore. Non CRYSTALLIZE: il segnale e' forte ma il contratto di trace/denominatore deve maturare prima."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1458.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260509_0819_decision.json:1:{"cycle_ts": "20260509_0819", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260509_0819", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0819.md", "exists": true, "title": "Agent Report - Vc Non-Sturmian Label Null Gate", "size": 9214}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0819.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente sulle 7 lenti: hard zero, perimetro N=144, non_possible e contaminazione cognitiva sono dichiarati e non emergono contraddizioni dai dati visibili.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_082441.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_082441.json", "rho": 0.9325, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "medium", "reasoning": "Il ciclo ha prodotto un vincolo strutturale utile: il label-set phi puo' essere preservato da generatori nominalmente non-Sturmian solo quando trasportano memoria di scala lunga, mentre balanced random e Markov-density falliscono. Questo sposta il nodo regressivo dal confronto GUE/Poisson al contratto del generatore: prima di continuare sul confine come terzo incluso va separata conservazione del label-set da indipendenza reale dal boundary, altrimenti il prossimo ciclo rischia dettaglio locale su N=144.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Falsificare l'indipendenza del null label-preserving: test cross-scale N multipli e phase-bias per distinguere memoria di scala lunga da trasporto quasi-Sturmian prima del confronto GUE/Poisson", "reason": "Il null non-Sturmian accettato non e' indipendente dal boundary; il prossimo ciclo deve attaccare il contratto del generatore, non accumulare altri eventi V_c sullo stesso perimetro."}, "notes": "Side-effect log-only: proposta modifica seme. Prossimo esperimento consigliato: N in {89,144,233,377}, stesse famiglie generatori, gate invariato, ma verdict centrato su stabilita' cross-scale di acceptance_rate, phase concentration e hamming/label tradeoff."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0819.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_1909.md:12:- falsifier_summary: Il report e' coerente nel falsificare il boundary esatto, ma L1/L4 si rompono dove "nullo/cade" viene usato per il core alto intero mentre i dati mostrano sopravvivenza parziale per-label.
tools/data/repairs/repair_20260508_1909.md:16:- reasoning: Il ciclo ha falsificato il claim operativo: il confine reale del supertile non batte il taglio contiguo a stessa multiset, mentre lo shuffle interno distrugge il core. L'evidenza sposta il nodo regressivo dal boundary geometrico al contratto osservabile: il portatore e' ordine interno piu' scala lunga, non il taglio esatto del supertile.
tools/data/odlyzko_probe_results.json:26:      "class": "GUE",
tools/data/odlyzko_probe_results.json:32:      "class": "GUE",
tools/data/odlyzko_probe_results.json:38:      "class": "GUE",
tools/data/odlyzko_probe_results.json:44:      "class": "GUE",
tools/data/odlyzko_probe_results.json:56:    "fd_class": "GUE",
tools/data/odlyzko_probe_results.json:57:    "verdict": "LIKELY GUE: \u03b2\u2192GUE, KS\u2192GOE (finite-height effect, Piano 11c)",
tools/data/repairs/repair_20260508_2140_decision.json:1:{"cycle_ts": "20260508_2140", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_2140", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_2140.md", "exists": true, "title": "Agent Report - Quasiperiodic Vc Lattice Gate", "size": 8637}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_2140.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente sulle lenti applicabili: nessuna proibizione hard non supportata, nessun confronto percentuale decisivo fra denominatori incompatibili, nessun silent patching visibile, edge case random isolato, nessuna discovery nuova rivendicata, contaminazione cognitiva metabolizzata con CE/KSAR espliciti.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_214506.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_214506.json", "rho": 0.9325, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "REDESIGN", "confidence": "high", "reasoning": "Il ciclo non ha confermato un bordo reticolare specifico di phi: il random bilanciato comprime `V_c` molto piu' dei metallici, quindi il segnale e' dominato dal denominatore/null e non dalla struttura Sturmian. L'Affinatore ha gia' isolato il nodo regressivo: il null random non e' omogeneo rispetto al boundary operator `V_c`; continuare nello stesso frame accumulerebbe dettaglio locale sospetto.", "action_type": "modify_seme", "detail": {"field": "direzione", "new_value": "Riprogettare il gate `V_c` con null omogenei al boundary operator: phase-shuffle Sturmian, label-preserving surrogate e controllo gap_ratio prima di estendere a nuovi domini GUE/Poisson", "reason": "Il prossimo ciclo deve correggere il denominatore del test, non estrarre altro dal fit o dalla compressione grezza di `V_c`."}, "notes": "Non cristallizzare. Il risultato utile e' metodologico: il bordo `V_c` richiede null costruiti sulla stessa classe operatoriale, altrimenti il random crea una soglia artificiale a griglia bassa."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_2140.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/evolution/evolution_20260508_2019.md:3:Ho mantenuto il report breve e centrato sul passo: traiettoria reader/generator, attrito da autopsy senza jsonl, nodo regressivo nel contratto di avvio e nella condizione di uscita dal banco phi, consecutio verso un `reader_generator_gate` trasferito al confine GUE/Poisson.
tools/data/repairs/repair_20260508_1947_decision.json:1:{"cycle_ts": "20260508_1947", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260508_1947", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260508_1947.md", "exists": true, "title": "Agent Report - Position/Error Gate Del Core Phi", "size": 9388}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260508_1947.json", "exists": true, "coherent": false, "summary": "Il report e' sostanzialmente coerente sui dati visibili, ma L1 si rompe nel passaggio da non-separazione empirica a linguaggio di non-possibilita'.", "counts": {"high": 0, "medium": 1, "low": 2}, "flags": [{"lens": "L1", "severity": "medium", "claim": "\"qui diventa non-possibile cercare il boundary del supertile con label-set, IDS rank o errore label sullo stesso perimetro\"", "suggestion": "Riformulare come: 'in questo perimetro, questi osservabili non separano aligned da misaligned'; evitare 'non-possibile' finche' non esiste un test con zero esatto o bound formale."}, {"lens": "L4", "severity": "low", "claim": "\"supertile_shuffle e same_length_contiguous_shuffle conservano la stessa geometria mediana dei core label\"", "suggestion": "Specificare 'stessa geometria mediana solo per IDS delta e index delta/N; label error, all-high per order e spacing non favoriscono aligned e in parte favoriscono misaligned'."}, {"lens": "L5", "severity": "low", "claim": "\"il prossimo gate deve lasciare il chunk e misurare grammatica simbolica nativa: return words, fattori speciali, palindromic defect\"", "suggestion": "Nel prossimo ciclo includere esplicitamente baseline classica Sturmian: return words, special factors, palindromic richness/defect attesi; dichiarare NEW solo per residui non spiegati da questi teoremi."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260508_195247.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260508_195247.json", "rho": 0.9217, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha prodotto un vincolo strutturale chiaro: il boundary simbolico del supertile non batte il taglio contiguo misallineato su IDS/rank/errore, mentre la distruzione dell'ordine interno collassa il core. La nuova direzione del seme sposta correttamente il test fuori dal deep-dive locale verso GUE/Poisson, cioe' verso falsificazione cross-dominio del confine come terzo incluso operativo.", "action_type": "trigger_cycle", "detail": {"direction": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo", "reason": "proseguire sul frame gia' riallineato verso controllo cross-dominio"}, "notes": "Non serve STOP_FOR_REVIEW: la falsificazione e' utile ma non richiede scelta dell'operatore. Non serve ulteriore REDESIGN: il seme ha gia' assorbito il vincolo spostando il prossimo giro su GUE/Poisson."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260508_1947.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260509_0652.md:16:- reasoning: Il ciclo ha prodotto una falsificazione strutturale utile: il label-set preservato non basta a ricostruire il boundary `V_c` nel perimetro N=89. Non serve fermare l'operatore: la consecutio e' gia' indicata dal deposito, cioe' riparare il null al nodo generativo e distinguere phase-shuffle Sturmian da surrogate label-preserving prima di estendere a GUE/Poisson.
tools/data/repairs/repair_20260509_0652.md:24:- L7 medium: Aggiungere un failure mode esplicito: "ordine generativo" significa stabilita' 12/12 internal_cross e 0 multi/floor su phase x threshold; singoli internal_cross non-Sturmian non contano come trasporto del boundary.
tools/data/repairs/repair_20260514_1850_decision.json:1:{"cycle_ts": "20260514_1850", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260514_1850", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260514_1850.md", "exists": true, "title": "Agent Report - Interfaccia component_state su bordo Anderson 3D", "size": 9913}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260514_1850.json", "exists": true, "coherent": false, "summary": "Il report e' quasi internamente coerente sui dati Anderson e sui perimetri, ma si rompe su L6: la contaminazione cognitiva non e' dichiarata nel formato richiesto e il Vault resta deposito operativo, non metabolismo esplicito del campo.", "counts": {"high": 0, "medium": 1, "low": 0}, "flags": [{"lens": "L6", "severity": "medium", "claim": "Contamination Classification include `vault`: ramo `20260514_1701` Grammar-vs-Scale Boundary Gate conservato come contro-perimetro, non seguito.", "suggestion": "Nel prossimo ciclo aggiungere una riga esplicita: `Contaminazione cognitiva: CE-none: nessuna voce CE/YSN/Cornelius/KSAR/PVI usata; Vault 20260514_1701 solo contro-perimetro operativo` oppure nominare la voce CE/PVI/Vault effettivamente usata nella combo."}]}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260514_185450.json", "decision": "WARN", "reason": "P5 (Autopoiesi): ciclo non ha prodotto tensioni nuove né cambiato direzione", "p0_passed": true, "p1_passed": true, "p5_passed": false, "p5_violations": [{"issue": "no_new_tension_or_direction", "old_count": 13, "new_count": 13}]}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260514_185450.json", "rho": 0.8458, "band": "SOSPENSIONE"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "medium", "reasoning": "Il ciclo non ha promosso una legge fisica: ha stabilizzato il contratto del tester su Anderson 3D dichiarando il limite SR/L1 e il segnale residuo triple_var. Questo e' utile solo se ora viene verificata la riusabilita' su un secondo fisico B, altrimenti resta dettaglio locale del bordo GOE-GUE-Poisson-Anderson.", "action_type": "trigger_cycle", "detail": {"direction": "Usare lo stesso tool contract component_state(SR,L1,triple_var) su un secondo dominio fisico B indipendente, con step_trace esplicito e null Poisson span-matched; vietata promozione a legge se non separano almeno due componenti o se il segnale resta solo triple_var.", "reason": "Testare trasferibilita' cross-dominio del contratto, non approfondire Anderson L=6."}, "notes": "Preferire un dominio spettrale fisico non Anderson e non Sturmian-vault, cosi' il prossimo ciclo discrimina interfaccia riusabile da adattamento locale."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260514_1850.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/repairs/repair_20260508_2013.md:16:- reasoning: Il ciclo ha chiuso anche il gate globale Ostrowski: high-core aligned non batte il misaligned su distanza boundary ne' su firma Zeckendorf, quindi il boundary esatto del supertile non e' portatore rilevato neppure al piano della numerazione globale. Dopo tre giri consecutivi sullo stesso frame con vincoli negativi coerenti, continuare sulla stessa TRASCENDENZA_LIMITE produce dettaglio locale e rischia accumulo anti-tautologico sterile; la traiettoria deve tornare al confine cross-dominio dichiarato nel seme.
tools/data/repairs/repair_20260508_2013.md:24:- L3 low: Separare il constraint: 'CONSTRAINT on TRASCENDENZA_LIMITE / OSTROWSKI_BOUNDARY_GATE'; lasciare `QPG_GAP_RATIO_DENOMINATOR_GATE` fuori dal verdict o marcarlo come parent non testato.
tools/data/repairs/repair_20260509_0741_decision.json:1:{"cycle_ts": "20260509_0741", "decision": "SKIP", "should_rerun": false, "reasons": ["no_repair_condition_matched"], "guards": {"repair_depth": 0, "max_depth": 1, "parent_ts": "", "loop_danger": false, "aeternitas_veto": false}, "signals": {"cycle_ts": "20260509_0741", "agent": {"path": "/opt/MM_D-ND/tools/data/reports/agent_20260509_0741.md", "exists": true, "title": "Agent Report - Vc Phase-Bridge Label Null", "size": 10086}, "falsifier": {"path": "/opt/MM_D-ND/tools/data/reports/falsifier_20260509_0741.json", "exists": true, "coherent": true, "summary": "Il report e' internamente coerente rispetto alle 7 lenti: dichiara il perimetro Sturmian, riporta count grezzi, isola edge case e include non_possible esplicito.", "counts": {"high": 0, "medium": 0, "low": 0}, "flags": []}, "aeternitas": {"path": "/opt/MM_D-ND/tools/data/aeternitas/aeternitas_20260509_074804.json", "decision": "PROCEED", "reason": "P0 OK · P1 OK · P5 OK", "p0_passed": true, "p1_passed": true, "p5_passed": true, "p5_violations": []}, "veritas": {"path": "/opt/MM_D-ND/tools/data/veritas/veritas_20260509_074804.json", "rho": 0.985, "band": "COLLASSO"}, "valutatore": {"exists": true, "decision": "NEXT_CYCLE", "confidence": "high", "reasoning": "Il ciclo ha risolto il nodo operativo immediato: il gate label-preserving entra a N=144, ma solo tramite `phase_shift_sturmian`, quindi il null non e' controcampo indipendente. Il seme e' gia' stato spostato al piano 100 verso il confine GUE/Poisson; questa e' la prossima mossa corretta per testare il bordo come terzo incluso invece di accumulare altra telemetria locale sul generatore.", "action_type": "trigger_cycle", "detail": {"direction": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo", "constraint": "non trattare il ponte Sturmian come null indipendente; usare `source_mode` come audit obbligatorio"}, "notes": "Continuare il flusso. Nessuna dipendenza dall'operatore: il risultato e' un vincolo utile, non una cristallizzazione o contraddizione che richiede review."}, "loop_guard": {"path": "/opt/MM_D-ND/tools/data/reports/loop_guard_20260509_0741.json", "exists": true, "bands": {"valutatore_decisions": "OK", "piano_trajectory": "OK"}, "danger": false}, "session": {"exists": true, "sync_blocked": false, "errors": ""}}, "directive_path": "/opt/MM_D-ND/tools/data/operator_directive.md", "record_json": null, "record_md": null}
tools/data/seme_backup_b2_20260509_071041.json:2:  "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_backup_b2_20260509_071041.json:3:  "new_direzione": "Costruire il null label-preserving per V_c prima del trasferimento: ridisegnare il generatore surrogate finche' raggiunge Jaccard>=0.75 a N=144 con acceptance_rate non nulla, poi solo dopo confrontare GUE/Poisson",
tools/data/perturbation_rank_size_curve.json:38:  "domains": {
tools/data/evolution/evolution_20260512_0330.md:3:Ho tenuto il report breve e centrato sul passo: attrito principale nel denominatore troppo largo, nodo regressivo nel disegno dei controlli, consecutio verso `prime_vs_mod6_SR_boundary`.
tools/data/boundary_mixture_gate_20260507_0330.json:2:  "experiment": "boundary_mixture_gate",
tools/data/boundary_mixture_gate_20260507_0330.json:3:  "question": "Is the GUE-Poisson mixed layer cleanly classifiable after denominator gating?",
tools/data/boundary_mixture_gate_20260507_0330.json:20:    "out": "tools/data/boundary_mixture_gate_20260507_0330.json"
tools/data/notte_20260321_0330.md:4:  ising_2d_var_-0.1: r=0.9681659409908998, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260321_0330.md:5:  ising_2d_var_0.1: r=0.7138844511232227, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260321_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260321_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260321_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260321_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260321_0330.md:10:  brownian_motion_var_0.3: r=1.0301957517700957, spacing=Poisson-like (⟨r⟩=0.39787683667863427)
tools/data/notte_20260321_0330.md:11:  brownian_motion_var_0.5: r=1.0, spacing=Poisson-like (⟨r⟩=0.3942099149299928)
tools/data/notte_20260321_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260321_0330.md:13:  percolation_var_0.55: r=1.0454545454545456, spacing=Poisson-like (⟨r⟩=0.4677794328528817)
tools/data/notte_20260321_0330.md:14:  percolation_var_0.65: r=1.1785714285714284, spacing=Poisson-like (⟨r⟩=0.4343171927696077)
tools/data/notte_20260321_0330.md:44:## Fase 4: Cross-domain
tools/data/evolution/evolution_20260509_0330.md:3:Ho mantenuto il focus sul passo: inversione da crossing discreto a curva, attrito nella traccia provider senza jsonl, nodo regressivo nel null non ancora omogeneo al boundary operator, consecutio verso phase-shuffle, surrogate label-preserving e separazione `floor_hit` / crossing interno.
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:2:  "experiment": "boundary_blank_null_audit",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:7:    "R_GUE": 0.5307,
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:8:    "R_Poisson": 0.3862943611198906
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:10:  "domains": {
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:12:      "domain": "string_vibration",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:19:      "class_original": "Poisson",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:20:      "class_shuffled": "Poisson",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:34:      "domain": "reaction_diffusion",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:41:      "class_original": "GUE",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:42:      "class_shuffled": "GUE",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:58:      "domain": "logistica_biforcazione_var_3.5699",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:65:      "class_original": "GUE",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:66:      "class_shuffled": "Poisson",
tools/data/boundary_blank_null_audit_residual_20260509_1500.json:83:    "domains": [
tools/data/experiment_results.json:152:      "esperimento": "boundary_ising",
tools/data/experiment_results.json:153:      "ipotesi_testata": "H_boundary",
tools/data/experiment_results.json:305:      "esperimento": "boundary_logistica",
tools/data/experiment_results.json:306:      "ipotesi_testata": "H_boundary",
tools/data/evolution/evolution_20260430_1905.md:3:**Sintesi dell'osservazione:** run pulito (331s, 0 errori) ma con scope doppio che ha prodotto due troncamenti — il report scientifico e il testo finale si interrompono entrambi a meta'. Il nodo regressivo non e' il buffer ma la scelta di due esperimenti in un budget da uno. Il campo vivo dice gia' "UNA tensione" — il vincolo va reso esplicito anche sullo scope di output. Due possibilita' concrete emergono: il dipolo ordering (spacing_ratio vs lag1_acf come terzo incluso al boundary) e i tre regimi mod-q (finding troncato, recuperabile).
tools/data/seme_backup_b2_20260514_150530.json:2:  "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/cognitive_enzymes_archive.json:553:      "snippet": "**Source:** /sessions/pensive-sharp-curie/mnt/domain_D-ND_Cosmology/D-ND Workflow/D-ND Workflow/Domande su Dipolo assiomatico.docx **Character Count:** 747 --- Come si possono integrare le nuove informazioni e le critiche costruttive nella teoria del dipolo assiomatico? Quali sono gli aspetti della teoria che necessitano di una revisione piÃ¹ approfondita? Q"
tools/data/cognitive_enzymes_archive.json:2200:      "snippet": "**Source:** /sessions/pensive-sharp-curie/mnt/domain_D-ND_Cosmology/D-ND Workflow/D-ND Workflow/Salto di Paradigma/Mediare il Cambio Paradigma.docx **Character Count:** 11443 --- Person: - Negli eventi del cambio di paradigma la comprensione assume la risultante di ciò che è , per facilitare questa comprensione che distrugge il costituito e uccide ogni forma"
tools/data/cognitive_enzymes_archive.json:2291:      "snippet": "Direzione corrente: confine come terzo incluso operativo sui domini GUE/Poisson/non-phi. Possibile risultante da respirare: - D-ND: terzo incluso come punto-zero tra repulsione e indipendenza. - Operatori: graph curvature + spectral rigidity + non-phi generator control. - Dipolo: core congiunto / residuo singolo. - Punto-zero: confine prima che venga classif"
tools/data/cognitive_enzymes_archive.json:2315:      "snippet": "**Source:** /sessions/pensive-sharp-curie/mnt/domain_D-ND_Cosmology/D-ND Workflow/D-ND Workflow/DND DOC/D-ND notes/2023-09-11-conversations/2023-7-11/20-49-18-_LDND___Assioma_Primitivo_nella_Dinamica.docx **Character Count:** 8342 --- >> USER: Leggi attentamente le istruzioni: queste sono le istanze che ho fatto con te su un lavoro e che ho archiviato sul mi"
tools/data/cognitive_enzymes_archive.json:5959:      "snippet": "**Report Date:** 2026-02-14 **Corpus Location:** `/sessions/pensive-sharp-curie/mnt/domain_D-ND_Cosmology/D-ND Workflow/D-ND Workflow` **Total Files Analyzed:** 1,411 .docx files **Chronological Span:** July 11, 2023 — September 9, 2023 (41 dated conversation sessions) **Analysis Focus:** High-value content NOT in existing 653-file corpus ---"
tools/data/cognitive_enzymes_archive.json:6945:      "snippet": "Operatori: - omotopia; - omologia; - coomologia; - indice; - winding number; - Euler characteristic; - Betti numbers; - persistent homology; - Morse theory; - boundary operator; - cobordism; - sheaf / cosheaf; - topos-like viewpoint. Dipoli utili: - bordo / interno; - buco / ponte; - classe globale / rappresentante locale; - singolare / regolare; - persisten"
tools/data/cognitive_enzymes_archive.json:7376:      "snippet": "For a \"random\" drawing — one produced by a chaotic dynamical system in the large-$n$ limit — the intersection matrix $\\mathbf{I}$ belongs to the **Gaussian Antisymmetric Ensemble** (related to GUE through the symplectic structure). **Montgomery-Odlyzko Correspondence** (Montgomery 1973, Odlyzko 1987): The pair correlation function of the eigenvalues of GUE r"
tools/data/loop_state.json:2558:          "answer": "## Reissner-Nordström → QxG: il confine\n\nMetrica RN: `ds² ∝ (1 - r_s/r + r_Q²/r²)` con `r_Q² = GQ²/(4πε₀c⁴)`.\n\nDue orizzonti: **r± = GM/c² ± √((GM/c²)² - r_Q²)**.\n\n**Dove diventa dominante:** all'orizzonte interno r₋. Lì la carica compete con la gravità — il potenziale repulsivo elettrico bilancia il collasso. Al limite estremo (Q massimo), r₊ = r₋ e **T_H → 0**: il buco nero smette di irradiare. GxE sopprime TxQ.\n\n**Dove si rompe:** in due punti.\n\n1. **Orizzonte interno (r₋):** instabilità di mass-inflation (Poisson-Israel). Perturbazioni infinitesime → curvatura divergente. La soluzione clas",
tools/data/loop_state.json:3123:          "answer": "## ExR→GxE: Onde EM e buchi neri carichi — domande aperte\n\nLa metrica Reissner-Nordström ha due orizzonti:\n\n**r± = GM/c² ± √((GM/c²)² - GQ²/(4πε₀c⁴))**\n\nLe onde EM (soluzioni di Maxwell su questo sfondo curvo) sollevano problemi aperti precisi:\n\n**1. Instabilità dell'orizzonte interno (Cauchy).** Perturbazioni EM che cadono verso r₋ subiscono blueshift infinito. Mass-inflation: l'energia EM diverge → la massa di Misner-Sharp diverge → r₋ diventa singolarità debole (Poisson-Israel 1990). Domanda aperta: la singolarità è attraversabile o no? Dipende dalla regolarizzazione quantistica che non abb",
tools/data/loop_state.json:3212:          "answer": "Reissner-Nordström: ds²∝(1 - rₛ/r + rQ²/r²), rQ²=GQ²/(4πε₀c⁴). Due orizzonti: r±=GM/c²±√((GM/c²)²-rQ²).\n\n**Limite estremo** Q→Qmax: r+=r-, T_H→0. Il buco nero smette di irradiare ma T=0 esatto viola il terzo principio → serve QxG per risolvere.\n\n**Dove si rompe**: l'orizzonte interno r- ha instabilità di mass-inflation (Poisson-Israel 1990): perturbazioni divergono → singolarità nulla. La geometria classica GxE collassa proprio dove QxG dovrebbe parlare.\n\n**Scala dominante**: M→M_Planck, r+→lP. Ma prima interviene Schwinger: E>m²ec³/(eℏ)≈1.3×10¹⁸ V/m scarica il buco nero in coppie e+e-. QxE sv",
tools/data/loop_state.json:3450:          "answer": "## ExR→GxE: Onde EM e buchi neri carichi — cosa NON sappiamo\n\n**Cosa sappiamo**: La metrica Reissner-Nordström ha due orizzonti: r± = GM/c² ± √((GM/c²)² - GQ²/(4πε₀c⁴)). Maxwell funziona su questo sfondo curvo: ∇_μ F^μν = 0. Il campo è E = Q/(4πε₀r²) fuori dall'orizzonte, regolare.\n\n**Cosa NON sappiamo**:\n\n1. **Instabilità di Cauchy interno**: l'orizzonte interno r₋ è instabile (mass inflation, Poisson-Israel 1990). Un'onda EM che cade verso r₋ viene blueshiftata infinitamente. L'energia diverge: T_μν → ∞. La soluzione classica RN è **fisicamente irrealizzabile** dentro r₋. Cosa la sostituisce",
tools/data/loop_state.json:3866:          "answer": "Reissner-Nordström: ds² con r± = GM/c² ± √((GM/c²)² - r_Q²), dove r_Q² = GQ²/(4πε₀c⁴).\n\n**Scala dominante**: limite estremo Q→Q_max, i due orizzonti si fondono r+=r-. Qui T_H→0: l'evaporazione semiclassica si ferma. Il buco nero diventa oggetto stabile — ma GR classica dice che dentro c'è ancora singolarità. Serve QxG per risolvere.\n\n**Dove si rompe**: l'orizzonte interno (r-) è classicamente instabile (mass inflation di Poisson-Israel). Gli effetti quantistici su r- sono ignoti — esattamente il VUOTO QxG.\n\n**Al confine**: per M→M_Planck, r+→l_P, curvatura R~1/l_P². GR cessa. Se Q>Q_max → sing",
tools/data/notte_20260331_1753.md:4:  Direzione: Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo in
tools/data/notte_20260331_1753.md:5:  [confine_inesplorato] BOUNDARY: 8 domini GUE, 5 Poisson — il confine è il terzo incluso oper
tools/data/notte_20260331_1753.md:8:  logistica_biforcazione_cp_3.57: r=1.0, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260331_1753.md:10:  logistica_biforcazione_cp_3.924: r=1.000568504832291, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260331_1753.md:12:  collatz_cp: r=0.9561815336463223, spacing=GUE-like [conferma]
tools/data/notte_20260331_1753.md:14:  ising_2d_cp_-0.3577838598900799: r=0.9361279457884175, spacing=GUE-like [conferma]
tools/data/notte_20260331_1753.md:15:  ising_2d_cp_0.3484712956135173: r=0.957792741636363, spacing=GUE-like [conferma]
tools/data/notte_20260331_1753.md:16:  brownian_motion_cp_0.16207460020731265: r=0.9883147585275244, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260331_1753.md:17:  brownian_motion_cp_0.9417285916195904: r=1.0, spacing=GUE-like [conferma]
tools/data/notte_20260331_1753.md:18:  percolation_cp_0.30242865227209575: r=0.8184523809523808, spacing=GUE-like [conferma]
tools/data/notte_20260331_1753.md:19:  percolation_cp_0.8132922606103345: r=1.0833333333333333, spacing=GUE-like [conferma]
tools/data/notte_20260331_1753.md:20:  cellular_automata_cp_150: r=0.7452006980802792, spacing=GUE-like [conferma]
tools/data/notte_20260331_1753.md:32:  Campo dopo Fase 0: 7 GUE / 3 Poisson
tools/data/notte_20260331_1753.md:36:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236) [NULL:non-disc]
tools/data/notte_20260331_1753.md:37:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094) [NULL:non-disc]
tools/data/notte_20260331_1753.md:38:  brownian_motion_var_0.5: r=0.9523809523809524, spacing=Poisson-like (⟨r⟩=0.39452778920439047) [NULL:non-disc]
tools/data/notte_20260331_1753.md:39:  percolation_var_0.65: r=1.0, spacing=Poisson-like (⟨r⟩=0.45465430949539676) [NULL:non-disc]
tools/data/notte_20260331_1753.md:71:## Fase 4: Cross-domain
tools/data/notte_20260331_1753.md:95:  GUE: 7 | Poisson: 7 | Vincoli: 15 | Anomalie: 11
tools/data/notte_20260331_1753.md:97:  Domini GUE: collatz_cp, ising_2d_cp_-0.3577838598900799, ising_2d_cp_0.3484712956135173, brownian_motion_cp_0.9417285916195904, percolation_cp_0.30242865227209575, percolation_cp_0.8132922606103345, cellular_automata_cp_150
tools/data/notte_20260331_1753.md:98:  Domini Poisson: logistica_biforcazione_cp_3.57, logistica_biforcazione_cp_3.924, brownian_motion_cp_0.16207460020731265, logistica_biforcazione_var_3.9, logistica_biforcazione_var_3.57, brownian_motion_var_0.5, percolation_var_0.65
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json:2:  "experiment": "prime_vs_mod6_sr_boundary",
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json:3:  "question": "Does SR belong to prime selection or to the row-local 6k +/- 1 pre-boundary?",
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json:38:    "out": "tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json",
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json:39:    "trace_jsonl": "tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.trace.jsonl"
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json:2:  "experiment": "prime_vs_mod6_sr_boundary",
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json:3:  "question": "Does SR belong to prime selection or to the row-local 6k +/- 1 pre-boundary?",
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json:38:    "out": "tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json",
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json:39:    "trace_jsonl": "tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.trace.jsonl"
tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json:650:  "verdict": "SR_BELONGS_TO_MOD6_PREBOUNDARY",
tools/data/gap_label_set_stability_20260508_1632.json:398:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:517:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:636:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:756:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:877:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:999:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:1122:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:1241:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:1360:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:1480:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:1603:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:1726:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:1847:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:1966:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:2085:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:2205:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:2327:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:2450:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:2571:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:2692:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:2814:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:2934:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:3056:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:3178:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:3301:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:3422:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:3544:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:3664:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:3785:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:3908:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:4030:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:4151:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:4273:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:4393:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:4516:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:4638:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:4761:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:4882:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:5002:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:5123:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:5245:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:5366:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:5488:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:5609:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:5729:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:5850:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:5973:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:6096:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:6218:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:6339:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:6459:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:6580:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:6703:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:6826:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:6949:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:7070:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:7192:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:7313:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:7436:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:7559:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:7682:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:7803:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:7925:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:8046:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:8169:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:8290:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:8412:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:8533:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:8655:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:8776:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:8899:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:9022:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:9144:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:9265:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:9384:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:9504:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:9627:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:9750:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:9873:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:9994:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:10113:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:10233:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:10354:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:10476:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:10597:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:10718:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:10837:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:10957:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:11080:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:11203:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:11326:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:11447:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:11568:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:11689:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:11812:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:11935:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:12057:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:12178:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:12299:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:12420:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:12542:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:12665:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:12787:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:12908:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:13029:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:13150:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:13272:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:13394:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:13516:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:13637:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:13757:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:13878:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:13999:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:14120:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:14242:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:14363:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:14483:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:14604:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:14727:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:14849:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:14972:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:15093:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:15213:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:15334:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:15455:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:15576:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:15697:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:15818:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:15938:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:16060:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:16183:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:16306:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:16428:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:16549:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:16669:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:16791:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:16912:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:17033:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:17156:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:17277:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:17397:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:17519:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:17641:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:17764:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:17885:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:18004:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:18123:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:18242:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:18364:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:18485:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:18608:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:18727:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:18846:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:18965:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:19086:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:19209:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:19332:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:19451:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:19570:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:19689:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:19812:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:19933:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:20053:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:20173:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:20294:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:20416:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:20535:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:20656:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:20778:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:20898:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:21019:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:21141:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:21262:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:21383:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:21506:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:21626:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:21747:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:21869:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:21989:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:22112:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:22233:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:22354:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:22475:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:22596:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:22717:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:22839:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:22959:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:23080:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:23201:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:23322:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:23444:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:23565:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:23686:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:23807:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:23928:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:24049:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:24171:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:24292:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:24413:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:24534:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:24656:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:24778:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:24899:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:25022:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:25144:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:25265:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:25387:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:25509:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:25632:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:25754:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:25877:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:25998:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:26120:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:26242:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:26364:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:26486:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:26608:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:26727:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:26846:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:26966:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:27086:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:27208:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:27330:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:27449:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:27568:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:27688:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:27809:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:27930:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:28052:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:28171:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:28290:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:28410:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:28532:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:28653:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:28776:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:28896:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:29016:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:29136:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:29257:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:29377:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:29498:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:29618:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:29738:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:29858:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:29979:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:30100:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:30222:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:30342:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:30462:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:30582:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:30703:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:30826:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:30946:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:31067:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:31187:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:31308:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:31431:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:31551:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:31674:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:31795:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:31915:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:32036:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:32158:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:32281:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:32402:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:32523:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:32643:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:32764:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:32885:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:33007:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:33129:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:33249:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:33370:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:33491:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:33612:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:33732:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:33852:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:33972:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:34093:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:34214:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:34336:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:34458:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:34580:      "domain": "phi",
tools/data/gap_label_set_stability_20260508_1632.json:34700:      "domain": "silver",
tools/data/gap_label_set_stability_20260508_1632.json:34821:      "domain": "bronze",
tools/data/gap_label_set_stability_20260508_1632.json:34942:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:35063:      "domain": "balanced_random_phi_labels",
tools/data/gap_label_set_stability_20260508_1632.json:35186:      "domain": "balanced_random_phi_labels",
tools/data/notte_20260401_0330.md:4:  Direzione: Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo in
tools/data/notte_20260401_0330.md:5:  [confine_inesplorato] BOUNDARY: 8 domini GUE, 5 Poisson — il confine è il terzo incluso oper
tools/data/notte_20260401_0330.md:6:  [scoperta] TRANS_BOUNDARY_FALSIFICA_F1: Transizione continua confermata: <r> da 0.521 a 0.887 (range
tools/data/notte_20260401_0330.md:12:  logistica_biforcazione_cp_3.57: r=1.0, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260401_0330.md:14:  logistica_biforcazione_cp_3.804: r=1.0005015045135406, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260401_0330.md:15:  logistica_biforcazione_cp_3.745: r=1.0004926108374383, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260401_0330.md:17:  collatz_cp: r=0.9796918008174159, spacing=GUE-like [conferma]
tools/data/notte_20260401_0330.md:19:  ising_2d_cp_-0.46615852163115534: r=0.9270941152116229, spacing=GUE-like [conferma]
tools/data/notte_20260401_0330.md:20:  ising_2d_cp_0.33645649256599713: r=0.9838054100611432, spacing=GUE-like [conferma]
tools/data/notte_20260401_0330.md:21:  brownian_motion_cp_0.15859839152036145: r=0.9935483870967742, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260401_0330.md:22:  brownian_motion_cp_0.9491984382159158: r=1.0, spacing=Poisson-like [VINCOLO] [NULL:non-disc]
tools/data/notte_20260401_0330.md:23:  percolation_cp_0.3791475515293742: r=1.0, spacing=GUE-like [conferma]
tools/data/notte_20260401_0330.md:24:  percolation_cp_0.8403996160580126: r=0.9655172413793103, spacing=GUE-like [conferma]
tools/data/notte_20260401_0330.md:25:  cellular_automata_cp_90: r=0.6458196181698486, spacing=GUE-like [conferma]
tools/data/notte_20260401_0330.md:37:  Campo dopo Fase 0: 6 GUE / 5 Poisson
tools/data/notte_20260401_0330.md:41:  ising_2d_var_0.1: r=0.9969894889487128, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260401_0330.md:42:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236) [NULL:non-disc]
tools/data/notte_20260401_0330.md:43:  brownian_motion_var_0.5: r=1.0, spacing=Poisson-like (⟨r⟩=0.3953893956038025) [NULL:non-disc]
tools/data/notte_20260401_0330.md:44:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094) [NULL:non-disc]
tools/data/notte_20260401_0330.md:76:## Fase 4: Cross-domain
tools/data/notte_20260401_0330.md:101:  GUE: 7 | Poisson: 8 | Vincoli: 17 | Anomalie: 10
tools/data/notte_20260401_0330.md:103:  Domini GUE: collatz_cp, ising_2d_cp_-0.46615852163115534, ising_2d_cp_0.33645649256599713, percolation_cp_0.3791475515293742, percolation_cp_0.8403996160580126, cellular_automata_cp_90, ising_2d_var_0.1
tools/data/notte_20260401_0330.md:104:  Domini Poisson: logistica_biforcazione_cp_3.57, logistica_biforcazione_cp_3.804, logistica_biforcazione_cp_3.745, brownian_motion_cp_0.15859839152036145, brownian_motion_cp_0.9491984382159158, logistica_biforcazione_var_3.9, brownian_motion_var_0.5, logistica_biforcazione_var_3.57
tools/data/conoscenza_teorie.json:250:          "extract": "In astrophysics, an event horizon is a boundary in spacetime beyond which no signal can ever reach a given observer. Wolfgang Rindler coined the term in the 1950s.",
tools/data/conoscenza_teorie.json:526:        "claim": "PSD_BLUE_NOISE found a two-component structure (Poisson floor + anti-correlated dip) and a 2x amplitude gap between the 1/k ACF model and the PSD. TWO_CHANNEL_DECOMPOSITION found two independent anti-correlation channels (residue + magnitude). If these channels are spectrally independent, Wiener-Khi",
tools/data/conoscenza_teorie.json:582:        "claim": "The boundary between GUE and Poisson regimes should affect the two-channel decomposition. If gap correlations decay with prime scale (Brody β → 0), does the Markov-3 ordering information in the residue channel also decay?",
tools/data/conoscenza_teorie.json:590:            "raw": "qui diventa possibile separare le proprieta del gap dei primi in scala-dipendenti (che decadono con PNT) e scala-invarianti (che sono vincoli permanenti). Qui diventa non-possibile usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati.",
tools/data/conoscenza_teorie.json:592:            "non_possibile": "usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati"
tools/data/conoscenza_teorie.json:667:          "radici": "duality contrast that strengthens with scale (GUE, alpha > 0.5, deep structure) and duality contrast that weakens with scale (primes, alpha < 0.5, dissolving structure). The two are dual because both show dipolar ordering at small scales — the difference emerges only when you observe the trajectory.",
tools/data/conoscenza_teorie.json:671:            "raw": "here it becomes possible to discriminate primes from GUE by their scaling trajectory, not by their local statistics. Here it becomes non-possible to claim that prime gaps have \"the same universality class as GUE\" without specifying the scale and the observable.",
tools/data/conoscenza_teorie.json:693:        "claim": "PSD_BLUE_NOISE found a two-component structure (Poisson floor + anti-correlated dip) and a 2x amplitude gap between the 1/k ACF model and the PSD. TWO_CHANNEL_DECOMPOSITION found two independent anti-correlation channels (residue + magnitude). If these channels are spectrally independent, Wiener-Khi",
tools/data/conoscenza_teorie.json:704:        "claim": "If acf(k) ~ -A(p)/k, then via Wiener-Khinchin the PSD low-frequency suppression should track A(p). The two measurements (time-domain ACF, frequency-domain PSD) must give consistent Poisson crossover predictions.",
tools/data/conoscenza_teorie.json:728:        "claim": "\"Three independent observables (beta, <r>, acf1) predict Poisson at p*~10^{14}. Hierarchy: shape decorrelates first, ratio second, sequential memory last.\" — Is this hierarchy prime-specific or generic?",
tools/data/conoscenza_teorie.json:753:        "claim": "PSD_BLUE_NOISE found a two-component structure (Poisson floor + anti-correlated dip) and a 2x amplitude gap between the 1/k ACF model and the PSD. TWO_CHANNEL_DECOMPOSITION found two independent anti-correlation channels (residue + magnitude). If these channels are spectrally independent, Wiener-Khi",
tools/data/conoscenza_teorie.json:765:        "claim": "If acf(k) ~ -A(p)/k, then via Wiener-Khinchin the PSD low-frequency suppression should track A(p). The two measurements (time-domain ACF, frequency-domain PSD) must give consistent Poisson crossover predictions.",
tools/data/conoscenza_teorie.json:787:        "claim": "\"Three independent observables (beta, <r>, acf1) predict Poisson at p*~10^{14}. Hierarchy: shape decorrelates first, ratio second, sequential memory last.\" — Is this hierarchy prime-specific or generic?",
tools/data/conoscenza_teorie.json:819:          "BOUNDARY",
tools/data/conoscenza_teorie.json:824:        "claim": "The boundary between GUE and Poisson is \"the third included\" (A9). Is this boundary populated by multiple domains, or are primes special?",
tools/data/conoscenza_teorie.json:831:          "BOUNDARY",
tools/data/conoscenza_teorie.json:837:        "claim": "All four observables (Brody beta, dR_acf1, gap_acf1, <r>) drift toward Poisson with scale. > Is this ONE universal crossover (\"il confine è il terzo incluso\") or independent drifts?",
tools/data/conoscenza_teorie.json:844:          "DIPOLAR_ILLUSORY_BOUNDARY"
tools/data/conoscenza_teorie.json:854:          "BOUNDARY",
tools/data/conoscenza_teorie.json:858:        "claim": "The boundary between GUE and Poisson regimes should affect the two-channel decomposition. If gap correlations decay with prime scale (Brody β → 0), does the Markov-3 ordering information in the residue channel also decay?",
tools/data/conoscenza_teorie.json:866:            "raw": "qui diventa possibile separare le proprieta del gap dei primi in scala-dipendenti (che decadono con PNT) e scala-invarianti (che sono vincoli permanenti). Qui diventa non-possibile usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati.",
tools/data/conoscenza_teorie.json:868:            "non_possibile": "usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati"
tools/data/conoscenza_teorie.json:882:          "BOUNDARY",
tools/data/conoscenza_teorie.json:894:          "BOUNDARY",
tools/data/conoscenza_teorie.json:922:          "BOUNDARY",
tools/data/conoscenza_teorie.json:934:          "BOUNDARY",
tools/data/conoscenza_teorie.json:942:          "radici": "duality contrast that strengthens with scale (GUE, alpha > 0.5, deep structure) and duality contrast that weakens with scale (primes, alpha < 0.5, dissolving structure). The two are dual because both show dipolar ordering at small scales — the difference emerges only when you observe the trajectory.",
tools/data/conoscenza_teorie.json:946:            "raw": "here it becomes possible to discriminate primes from GUE by their scaling trajectory, not by their local statistics. Here it becomes non-possible to claim that prime gaps have \"the same universality class as GUE\" without specifying the scale and the observable.",
tools/data/conoscenza_teorie.json:964:          "BOUNDARY",
tools/data/conoscenza_teorie.json:969:        "claim": "All four observables (Brody beta, dR_acf1, gap_acf1, <r>) drift toward Poisson with scale. > Is this ONE universal crossover (\"il confine è il terzo incluso\") or independent drifts?",
tools/data/conoscenza_teorie.json:987:          "BOUNDARY",
tools/data/conoscenza_teorie.json:991:        "claim": "The boundary between GUE and Poisson regimes should affect the two-channel decomposition. If gap correlations decay with prime scale (Brody β → 0), does the Markov-3 ordering information in the residue channel also decay?",
tools/data/conoscenza_teorie.json:999:            "raw": "qui diventa possibile separare le proprieta del gap dei primi in scala-dipendenti (che decadono con PNT) e scala-invarianti (che sono vincoli permanenti). Qui diventa non-possibile usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati.",
tools/data/conoscenza_teorie.json:1001:            "non_possibile": "usare il drift GUE→Poisson per predire il comportamento del canale residuo — sono strutturalmente disaccoppiati"
tools/data/conoscenza_teorie.json:1015:          "BOUNDARY",
tools/data/conoscenza_teorie.json:1027:          "BOUNDARY",
tools/data/conoscenza_teorie.json:1055:          "BOUNDARY",
tools/data/conoscenza_teorie.json:1067:          "BOUNDARY",
tools/data/conoscenza_teorie.json:1075:          "radici": "duality contrast that strengthens with scale (GUE, alpha > 0.5, deep structure) and duality contrast that weakens with scale (primes, alpha < 0.5, dissolving structure). The two are dual because both show dipolar ordering at small scales — the difference emerges only when you observe the trajectory.",
tools/data/conoscenza_teorie.json:1079:            "raw": "here it becomes possible to discriminate primes from GUE by their scaling trajectory, not by their local statistics. Here it becomes non-possible to claim that prime gaps have \"the same universality class as GUE\" without specifying the scale and the observable.",
tools/data/conoscenza_teorie.json:1097:          "BOUNDARY",
tools/data/conoscenza_teorie.json:1101:        "claim": "Nel perimetro BOUNDARY 8 GUE / 5 Poisson, il gate `denominator_state` trasferisce oltre `V_c` solo se identifica le righe con null/surrogate disponibile e lascia blank le righe senza contro-perimetro.",
tools/data/conoscenza_teorie.json:1106:          "singolare": "domain/window prima della classificazione GUE/Poisson.",
tools/data/conoscenza_teorie.json:1109:            "raw": "qui diventa possibile portare BOUNDARY in un contratto cross-dominio; qui diventa non-possibile chiudere QxG o dichiarare transfer sui 5 blank senza nuovo null.",
tools/data/conoscenza_teorie.json:1110:            "possibile": "portare BOUNDARY in un contratto cross-dominio",
tools/data/seme_archive/piano_93.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_93.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_93.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_93.json:72:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_93.json:212:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_93.json:214:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_93.json:225:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_93.json:227:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_93.json:229:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_93.json:232:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_93.json:242:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_93.json:347:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_93.json:352:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_93.json:445:  "direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_93.json:605:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/seme_backup_b2_20260514_161119.json:2:  "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_zero.json:83:      "claim": "Paper A (DOI 10.5281/zenodo.18891337) ha errori tecnici (simplettico→anti-simplettico), overclaim (Q(sqrt5)→GUE non dimostrato), e P19 falsificazione non integrata. Chi cerca D-ND lo trova prima di Paper Zero.",
tools/data/seme_archive/piano_zero.json:257:              "det_meno1_SEPARA": "primi ratio=0.984 (sotto 1), GUE ratio=1.022 (sopra 1) — CHIRALI, lati opposti",
tools/data/seme_archive/piano_zero.json:258:              "det_piu1_UNIFICA": "primi ratio=1.000, GUE ratio=1.000 — IDENTICI sotto rotazione",
tools/data/seme_archive/piano_zero.json:261:            "sigma_GUE_vs_primi": {
tools/data/seme_archive/piano_zero.json:263:              "offset": "0.03-0.09 a ogni livello M^k, GUE sempre leggermente sopra",
tools/data/seme_archive/piano_zero.json:264:              "trend_parallelo": "PRIMI +0.343, GUE +0.354 — stessa curva, offset costante",
tools/data/seme_archive/piano_zero.json:275:                "ratio_GUE": 1.007,
tools/data/seme_archive/piano_zero.json:282:                "ratio_GUE": 1.007,
tools/data/seme_archive/piano_zero.json:289:                "ratio_GUE": 1.007,
tools/data/seme_archive/piano_zero.json:299:            "sopravvive": "la chirality primi/GUE persiste DENTRO le classi mod6 (per 0 e 2). Non e artefatto del setaccio. E una proprieta dell ordine che M rivela selettivamente.",
tools/data/seme_archive/piano_zero.json:300:            "compositi_stessa_classe": "ratio=0.94 (ancora piu ordinati dei primi sotto M). Il setaccio mod6 e visibile anche nei compositi, ma la separazione primi/GUE e un altro livello.",
tools/data/seme_archive/piano_zero.json:326:            "GUE_SPACING": {
tools/data/seme_archive/piano_zero.json:415:            "GUE_zeta": "nessuna auto-esclusione — equilibrio simmetrico, nessun tunnel",
tools/data/seme_archive/piano_99.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_99.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_99.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_99.json:72:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_99.json:82:      "source_experiment_id": "BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_99.json:194:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_99.json:196:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_99.json:207:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_99.json:209:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_99.json:211:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_99.json:214:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_99.json:224:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_99.json:329:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_99.json:334:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_99.json:428:  "direzione": "Costruire il null label-preserving per V_c prima del trasferimento: ridisegnare il generatore surrogate finche' raggiunge Jaccard>=0.75 a N=144 con acceptance_rate non nulla, poi solo dopo confrontare GUE/Poisson",
tools/data/seme_archive/piano_99.json:588:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/seme_archive/piano_99.json:605:    "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo"
tools/data/notte_20260315_0749.md:4:  ising_2d_var_-0.1: r=0.9917140139075722, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260315_0749.md:5:  ising_2d_var_0.1: r=1.2487805121596578, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260315_0749.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260315_0749.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260315_0749.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260315_0749.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260315_0749.md:10:  brownian_motion_var_0.3: r=0.990909090909091, spacing=Poisson-like (⟨r⟩=0.3830376668120655)
tools/data/notte_20260315_0749.md:11:  brownian_motion_var_0.5: r=1.0, spacing=Poisson-like (⟨r⟩=0.38666236411128574)
tools/data/notte_20260315_0749.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260315_0749.md:13:  percolation_var_0.55: r=0.6340378197997775, spacing=Poisson-like (⟨r⟩=0.4578693904490548)
tools/data/notte_20260315_0749.md:14:  percolation_var_0.65: r=1.0, spacing=Poisson-like (⟨r⟩=0.4600532522260183)
tools/data/notte_20260315_0749.md:44:## Fase 4: Cross-domain
tools/data/seme_archive/piano_96.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_96.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_96.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_96.json:85:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_96.json:95:      "source_experiment_id": "BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_96.json:185:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_96.json:187:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_96.json:198:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_96.json:200:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_96.json:202:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_96.json:205:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_96.json:215:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_96.json:320:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_96.json:325:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_96.json:418:  "direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_96.json:578:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/seme_archive/piano_97.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_97.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_97.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_97.json:85:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_97.json:95:      "source_experiment_id": "BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_97.json:185:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_97.json:187:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_97.json:198:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_97.json:200:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_97.json:202:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_97.json:205:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_97.json:215:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_97.json:320:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_97.json:325:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_97.json:418:  "direzione": "Riprogettare il gate `V_c` con null omogenei al boundary operator: phase-shuffle Sturmian, label-preserving surrogate e controllo gap_ratio prima di estendere a nuovi domini GUE/Poisson",
tools/data/seme_archive/piano_97.json:578:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/seme_archive/piano_97.json:595:    "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo"
tools/data/seme_archive/piano_95.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_95.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_95.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_95.json:85:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_95.json:95:      "source_experiment_id": "BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_95.json:197:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_95.json:199:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_95.json:210:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_95.json:212:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_95.json:214:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_95.json:217:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_95.json:227:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_95.json:332:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_95.json:337:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_95.json:430:  "direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_95.json:590:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/component_state_interface_smoke_input_20260514_1649.json:15:      "expected_class": "GUE",
tools/data/seme_archive/piano_94.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_94.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_94.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_94.json:72:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_94.json:199:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_94.json:201:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_94.json:212:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_94.json:214:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_94.json:216:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_94.json:219:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_94.json:229:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_94.json:334:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_94.json:339:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_94.json:432:  "direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_94.json:592:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/ciclo_memoria.json:29:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:41:      "verdict": "**CONSTRAINT**.\n\nIl gate BOUNDARY semi-reale trasferisce come supporto ordine/null in 11/13 righe. Non trasferisce come coordinata beta universale: 7 righe hanno blank, 4 trasferiscono senza blank, 2 ",
tools/data/ciclo_memoria.json:48:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:62:      "verdict": "**CONSTRAINT**.\n\nIl gate BOUNDARY trasferisce come supporto ordine/null su 11/13 righe. La coordinata beta 0.3 trasferisce esattamente su 4/13 righe. Questi due assi non coincidono.\n\nFormula valida:\n\n",
tools/data/ciclo_memoria.json:69:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:84:      "verdict": "**CONSTRAINT**.\n\nIl frame BOUNDARY regge come support-transfer su 11/13 righe, ma la parte non-esatta non e' una coda omogenea. Le righe support-transfer senza beta 0.3 esatta sono 7 e si dividono in ",
tools/data/ciclo_memoria.json:91:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:113:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:135:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:157:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:179:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:194:      "verdict": "**CONSTRAINT / FALSIFIED scoped**.\n\nFormula non valida:\n\n`prime_SR_persistent_boundary` come firma atomica prime-specific.\n\nFormula valida nel perimetro:\n\n`SR` e' forte nei primi ma non persistente co",
tools/data/ciclo_memoria.json:201:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:223:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:289:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:300:      "verdict": "**CONSTRAINT**.\n\nIl ritorno Aubry/Fibonacci trasferisce il confine BOUNDARY solo come finestra di accoppiamento. La formulazione valida e': nel perimetro misurato, `phi` e' terzo incluso fisico congiu",
tools/data/ciclo_memoria.json:307:      "tensione_attaccata": "BOUNDARY",
tools/data/ciclo_memoria.json:318:      "verdict": "**CONSTRAINT**.\n\nIl contro-perimetro coseno falsifica la promozione `phi` come terzo incluso fisico autonomo. Nel perimetro misurato il boundary congiunto non sopravvive quando la grammatica binaria v",
tools/data/ciclo_memoria.json:337:      "verdict": "**CONSTRAINT**.\n\nLa formulazione valida e': a V=2 il boundary e' proprieta della classe del generatore, non del solo phi. Il binario Sturmian produce scaling piu esteso del coseno continuo e del disor",
tools/data/ciclo_memoria.json:341:  "direzione_corrente": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_92.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_92.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_92.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_92.json:72:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_92.json:199:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_92.json:201:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_92.json:212:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_92.json:214:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_92.json:216:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_92.json:219:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_92.json:229:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_92.json:334:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_92.json:339:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_92.json:432:  "direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_92.json:592:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/seme_archive/piano_98.json:21:      "nota": "Input operatore 2026-04-10. Tocca: entropia come dispersione illusoria vs generazione dipolare. Consecutio: nel Lab i domini Poisson (entropia massima) mostrano dualita illusoria? I domini GUE (strutturati) mostrano dualita dipolare? Il drift verso Poisson (POISSON_CONVERGENCE) e perdita di dualita dipolare?",
tools/data/seme_archive/piano_98.json:62:      "id": "BOUNDARY",
tools/data/seme_archive/piano_98.json:63:      "claim": "8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo",
tools/data/seme_archive/piano_98.json:72:      "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_98.json:82:      "source_experiment_id": "BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/seme_archive/piano_98.json:178:      "claim": "La dimensionalita di perturbazione va riportata solo insieme a PC2, versione observables_registry e gate original-vs-shuffle per osservabile. Nel perimetro 20260506_1941, Poisson e shuffle-primi producono rank_all ~1.8-2.0 con denominatori deboli; dopo gate abs(z)>=2 il rank stabile torna vicino a 1. Rank PCA non gated non e evidenza strutturale.",
tools/data/seme_archive/piano_98.json:180:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_98.json:191:      "id": "BOUNDARY_LAYER_GATE",
tools/data/seme_archive/piano_98.json:193:      "claim": "I claim GUE/Poisson boundary devono riportare layer map: versione observables_registry, lista osservabili canonici, z original-vs-shuffle per osservabile, set endpoint-stable, e finestra/layer con margine classificatorio ambiguo. Nel perimetro sintetico agent_20260507_0330, il confine GUE-Poisson e beta 0.3-0.4: margine 0.070-0.083, ambiguous fraction 0.812-0.875, mentre gli osservabili stabili collassano da ~3.3 a 1.6. Il polo Poisson e classificabile ma denominator-weak.",
tools/data/seme_archive/piano_98.json:195:      "porta": "META_BOUNDARY",
tools/data/seme_archive/piano_98.json:198:      "origine": "cycle agent_20260507_0330: synthetic GUE-Poisson mixture layer gate",
tools/data/seme_archive/piano_98.json:208:      "claim": "Il denominator gate trasferisce come supporto one-sided dell'ordine quando l'ordine e visibile agli osservabili del perimetro, non come endpoint-stable support a due poli. Nel perimetro sintetico agent_20260507_0901, 4/4 domini non-BOUNDARY hanno endpoint_stable_observables=[] e polo coerente stable_count 3.0-5.0. Nel perimetro semi-reale agent_20260507_0923, primi e zeta trasferiscono (primi: SR,L1,triple_var; zeta: SR,L2), ma logistic_return_intervals e blank: stable_count coerente 0.0-0.2. Nel perimetro bridge agent_20260507_0942, prime_metric_delta_gamma_abs, prime_metric_dR_abs, zeta_trace_residual_step5_abs e hydrogen_bound_level_spacings trasferiscono su tutti i 5 osservabili canonici con endpoint_stable_observables=[]; e supporto perimetro-bridge, non universalita del gate. Nel perimetro logistic-native agent_20260507_1006, logistic_orbit_values trasferisce su block_entropy_deficit_k4 in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals mostra recurrence_diag_mean solo nel run principale e torna blank nel seed check. La beta 0.10/0.30/0.40/0.50 resta coordinata del protocollo quando compare, non coordinata universale. Nel perimetro surrogate-contract agent_20260507_1042, logistic_orbit_values trasferisce solo tramite block_entropy_deficit_k4 e sopravvive a marginal_shuffle, circular_shift e block_shuffle in run e seed check; logistic_symbolic_itinerary resta blank; logistic_return_intervals non replica (recurrence_diag_mean compare contro marginal/block nel run principale ma sparisce nel seed check). Nel perimetro cyclic-cut agent_20260507_1419, il residuo logistic_orbit_values non e artefatto del taglio lineare: cyclic_block_entropy_deficit_k4 e invariato sotto rotazione e replica contro marginal_shuffle e block_shuffle size 4-256 in run e seed check. Logistic_symbolic_itinerary e logistic_return_intervals restano blank nel criterio replicato. Il supporto logistic rimasto e orbit-local block grammar, non return/generating-partition support.",
tools/data/seme_archive/piano_98.json:313:      "claim": "Nel perimetro agent_20260508_0011, il contrasto di dualita (real-vs-shuffle z-score) per i gap primi scala come z ~ N^alpha con alpha(SR)=0.39+/-0.01, alpha(L1)=0.32+/-0.03, alpha(triple_var)=0.37+/-0.03 — tutti sotto 0.5 (effetto si indebolisce con la scala). GUE ha alpha >= 0.5 (effetto costante o crescente). Il discriminatore tra primi e GUE e l'esponente alpha, non il valore dell'osservabile a scala fissa. Seed check (42/137) conferma. L2 borderline (alpha~0.5, non discriminante).",
tools/data/seme_archive/piano_98.json:318:      "origine": "cycle agent_20260508_0011: duality_scale_contrast su 200K gap primi vs GUE vs Poisson",
tools/data/seme_archive/piano_98.json:411:  "direzione": "Falsificare `V_c` sul nodo regressivo del null: separare floor_hit e crossing interno, poi confrontare Sturmian phase-shuffle e surrogate label-preserving prima di estendere a GUE/Poisson.",
tools/data/seme_archive/piano_98.json:571:          "nota": "il confine non separa, unifica. Pattern BOUNDARY del Domandatore"
tools/data/seme_archive/piano_98.json:588:    "old_direzione": "Esplorare il confine: 8 domini GUE, 5 Poisson — il confine è il terzo incluso operativo"
tools/data/component_state_fit_ready_20260514_1649.json:19:    "GUE_unitary_no_time_reversal": {
tools/data/component_state_fit_ready_20260514_1649.json:29:    "declared": "single ordered spectrum or small class-labeled set; no new physical domain generation",
tools/data/component_state_fit_ready_20260514_1649.json:32:      "class-labeled input where direct_contrast is not separated on SR despite declared GOE/GUE classes",
tools/data/component_state_fit_ready_20260514_1649.json:40:    "optional_expected_class": "class label used for grouped Poisson contrast and direct class contrast",
tools/data/component_state_fit_ready_20260514_1649.json:53:    "poisson_contrast": "real spectrum versus span-matched Poisson null",
tools/data/component_state_fit_ready_20260514_1649.json:72:    "fall": "Tester falls if GOE/GUE direct SR separation disappears, if Poisson contrast absorbs all focus observables in chaotic classes, or if Anderson W6 keeps SR active under the declared threshold.",
tools/data/component_state_fit_ready_20260514_1649.json:73:    "transfer": "SR,L1,triple_var pass from the mathematical deposit into a physical spectrum tester as component states against Poisson and, when classes exist, direct class contrast."
tools/data/piano11b_gue_test.json:6:  "verdict": "GUE CONFERMATO via dipolo frattale: \u03b2>2 per 21/21 misure. KS globale=0/7 GUE (forma bulk). \u03b2 allo zero=21/21 GUE (repulsione). Il det=-1 parla nella repulsione di livello.",
tools/data/piano11b_gue_test.json:292:    "verdict_ks": "NON-GUE: classe dominante GOE. Revisione necessaria.",
tools/data/piano11b_gue_test.json:293:    "verdict_fractal": "GUE CONFERMATO via dipolo frattale: \u03b2>2 per 21/21 misure. KS globale=0/7 GUE (forma bulk). \u03b2 allo zero=21/21 GUE (repulsione). Il det=-1 parla nella repulsione di livello."
tools/data/piano11b_gue_test.json:300:        "class": "GUE"
tools/data/piano11b_gue_test.json:305:        "class": "GUE"
tools/data/piano11b_gue_test.json:310:        "class": "GUE"
tools/data/piano11b_gue_test.json:317:        "class": "GUE"
tools/data/piano11b_gue_test.json:322:        "class": "GUE"
tools/data/piano11b_gue_test.json:327:        "class": "GUE"
tools/data/piano11b_gue_test.json:334:        "class": "GUE"
tools/data/piano11b_gue_test.json:339:        "class": "GUE"
tools/data/piano11b_gue_test.json:344:        "class": "GUE"
tools/data/piano11b_gue_test.json:351:        "class": "GUE"
tools/data/piano11b_gue_test.json:356:        "class": "GUE"
tools/data/piano11b_gue_test.json:361:        "class": "GUE"
tools/data/piano11b_gue_test.json:368:        "class": "GUE"
tools/data/piano11b_gue_test.json:373:        "class": "GUE"
tools/data/piano11b_gue_test.json:378:        "class": "GUE"
tools/data/piano11b_gue_test.json:385:        "class": "GUE"
tools/data/piano11b_gue_test.json:390:        "class": "GUE"
tools/data/piano11b_gue_test.json:395:        "class": "GUE"
tools/data/piano11b_gue_test.json:402:        "class": "GUE"
tools/data/piano11b_gue_test.json:407:        "class": "GUE"
tools/data/piano11b_gue_test.json:412:        "class": "GUE"
tools/data/piano11b_gue_test.json:425:    "fluctuations": "det=-1 \u2192 Q(\u221a5) \u2192 L(s,\u03c7\u2085) \u2192 GUE (Piano 11)",
tools/data/piano11b_gue_test.json:426:    "family": "ALL det=-1 matrices \u2192 number fields \u2192 GUE (Piano 11b)",
tools/data/retriever_risultati.json:136:          "estratto": "In astrophysics, an event horizon is a boundary in spacetime beyond which no signal can ever reach a given observer. Wolfgang Rindler coined the term in the 1950s.",
tools/data/notte_20260322_0330.md:4:  ising_2d_var_-0.1: r=0.9533708497068641, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260322_0330.md:5:  ising_2d_var_0.1: r=0.99991253722176, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260322_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260322_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260322_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260322_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260322_0330.md:10:  brownian_motion_var_0.3: r=1.0, spacing=Poisson-like (⟨r⟩=0.3891607218310259)
tools/data/notte_20260322_0330.md:11:  brownian_motion_var_0.5: r=0.5735641227380016, spacing=Poisson-like (⟨r⟩=0.3863528241175028)
tools/data/notte_20260322_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260322_0330.md:13:  percolation_var_0.55: r=1.0, spacing=Poisson-like (⟨r⟩=0.3706649615579767)
tools/data/notte_20260322_0330.md:14:  percolation_var_0.65: r=1.0434782608695652, spacing=Poisson-like (⟨r⟩=0.4771540450594074)
tools/data/notte_20260322_0330.md:46:## Fase 4: Cross-domain
tools/data/agent_field_entry_supervised.md:50:Do not let has_SR decide the boundary alone.
tools/data/agent_field_entry_supervised.md:94:Current boundary:
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2:  "experiment": "aubry_boundary_phase_transport_gate",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:25:    "claim": "phi is a physical boundary state between periodic order and balanced random disorder only if spectral spacing and localization agree",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:29:    "non_possible": "single-observable boundary, phase-aggregated critical value, or phi outside the periodic-random interval"
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:32:    "joint_boundary_v": [
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:53:        "joint_boundary": true
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:69:        "joint_boundary": true
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:85:        "joint_boundary": true
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:101:        "joint_boundary": true
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:117:        "joint_boundary": false
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:133:        "joint_boundary": false
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:149:        "joint_boundary": false
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:165:        "joint_boundary": false
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:181:        "joint_boundary": false
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1602:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1613:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1624:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1635:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1646:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1658:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1670:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1682:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1694:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1706:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1718:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1729:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1740:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1751:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1762:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1774:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1786:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1798:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1810:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1822:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1834:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1845:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1856:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1867:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1878:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1890:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1902:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1914:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1926:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1938:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1950:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1961:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1972:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1983:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:1994:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2006:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2018:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2030:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2042:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2054:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2066:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2077:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2088:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2099:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2110:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2122:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2134:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2146:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2158:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2170:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2182:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2193:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2204:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2215:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2226:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2238:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2250:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2262:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2274:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2286:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2298:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2309:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2320:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2331:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2342:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2354:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2366:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2378:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2390:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2402:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2414:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2425:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2436:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2447:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2458:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2470:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2482:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2494:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2506:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2518:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2530:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2541:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2552:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2563:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2574:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2586:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2598:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2610:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2622:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2634:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2646:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2657:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2668:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2679:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2690:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2702:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2714:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2726:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2738:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2750:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2762:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2773:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2784:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2795:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2806:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2818:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2830:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2842:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2854:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2866:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2878:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2889:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2900:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2911:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2922:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2934:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2946:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2958:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2970:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2982:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:2994:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3005:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3016:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3027:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3038:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3050:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3062:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3074:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3086:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3098:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3110:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3121:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3132:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3143:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3154:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3166:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3178:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3190:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3202:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3214:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3226:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3237:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3248:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3259:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3270:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3282:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3294:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3306:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3318:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3330:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3342:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3353:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3364:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3375:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3386:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3398:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3410:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3422:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3434:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3446:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3458:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3469:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3480:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3491:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3502:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3514:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3526:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3538:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3550:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3562:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3574:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3585:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3596:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3607:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3618:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3630:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3642:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3654:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3666:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3678:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3690:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3701:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3712:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3723:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3734:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3746:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3758:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3770:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3782:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3794:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3806:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3817:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3828:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3839:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3850:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3862:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3874:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3886:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3898:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3910:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3922:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3933:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3944:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3955:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3966:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3978:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:3990:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4002:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4014:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4026:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4038:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4049:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4060:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4071:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4082:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4094:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4106:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4118:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4130:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4142:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4154:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4165:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4176:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4187:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4198:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4210:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4222:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4234:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4246:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4258:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4270:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4281:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4292:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4303:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4314:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4326:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4338:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4350:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4362:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4374:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4386:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4397:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4408:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4419:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4430:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4442:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4454:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4466:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4478:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4490:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4502:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4513:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4524:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4535:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4546:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4558:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4570:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4582:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4594:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4606:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4618:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4629:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4640:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4651:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4662:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4674:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4686:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4698:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4710:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4722:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4734:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4745:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4756:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4767:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4778:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4790:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4802:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4814:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4826:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4838:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4850:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4861:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4872:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4883:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4894:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4906:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4918:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4930:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4942:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4954:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4966:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4977:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4988:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:4999:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5010:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5022:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5034:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5046:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5058:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5070:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5082:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5093:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5104:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5115:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5126:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5138:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5150:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5162:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5174:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5186:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5198:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5209:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5220:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5231:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5242:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5254:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5266:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5278:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5290:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5302:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5314:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5325:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5336:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5347:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5358:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5370:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5382:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5394:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5406:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5418:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5430:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5441:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5452:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5463:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5474:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5486:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5498:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5510:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5522:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5534:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5546:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5557:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5568:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5579:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5590:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5602:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5614:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5626:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5638:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5650:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5662:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5673:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5684:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5695:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5706:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5718:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5730:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5742:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5754:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5766:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5778:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5789:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5800:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5811:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5822:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5834:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5846:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5858:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5870:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5882:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5894:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5905:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5916:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5927:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5938:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5950:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5962:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5974:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5986:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:5998:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6010:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6021:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6032:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6043:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6054:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6066:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6078:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6090:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6102:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6114:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6126:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6137:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6148:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6159:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6170:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6182:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6194:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6206:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6218:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6230:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6242:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6253:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6264:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6275:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6286:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6298:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6310:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6322:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6334:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6346:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6358:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6369:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6380:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6391:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6402:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6414:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6426:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6438:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6450:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6462:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6474:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6485:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6496:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6507:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6518:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6530:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6542:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6554:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6566:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6578:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6590:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6601:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6612:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6623:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6634:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6646:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6658:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6670:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6682:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6694:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6706:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6717:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6728:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6739:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6750:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6762:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6774:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6786:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6798:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6810:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6822:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6833:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6844:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6855:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6866:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6878:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6890:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6902:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6914:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6926:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6938:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6949:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6960:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6971:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6982:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:6994:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7006:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7018:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7030:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7042:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7054:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7065:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7076:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7087:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7098:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7110:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7122:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7134:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7146:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7158:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7170:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7181:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7192:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7203:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7214:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7226:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7238:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7250:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7262:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7274:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7286:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7297:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7308:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7319:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7330:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7342:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7354:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7366:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7378:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7390:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7402:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7413:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7424:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7435:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7446:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7458:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7470:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7482:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7494:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7506:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7518:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7529:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7540:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7551:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7562:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7574:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7586:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7598:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7610:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7622:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7634:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7645:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7656:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7667:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7678:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7690:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7702:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7714:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7726:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7738:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7750:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7761:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7772:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7783:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7794:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7806:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7818:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7830:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7842:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7854:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7866:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7877:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7888:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7899:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7910:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7922:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7934:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7946:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7958:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7970:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7982:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:7993:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8004:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8015:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8026:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8038:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8050:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8062:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8074:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8086:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8098:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8109:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8120:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8131:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8142:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8154:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8166:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8178:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8190:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8202:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8214:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8225:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8236:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8247:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8258:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8270:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8282:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8294:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8306:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8318:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8330:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8341:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8352:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8363:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8374:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8386:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8398:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8410:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8422:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8434:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8446:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8457:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8468:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8479:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8490:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8502:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8514:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8526:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8538:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8550:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8562:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8573:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8584:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8595:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8606:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8618:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8630:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8642:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8654:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8666:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8678:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8689:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8700:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8711:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8722:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8734:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8746:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8758:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8770:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8782:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8794:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8805:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8816:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8827:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8838:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8850:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8862:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8874:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8886:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8898:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8910:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8921:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8932:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8943:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8954:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8966:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8978:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:8990:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9002:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9014:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9026:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9037:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9048:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9059:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9070:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9082:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9094:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9106:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9118:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9130:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9142:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9153:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9164:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9175:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9186:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9198:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9210:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9222:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9234:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9246:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9258:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9269:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9280:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9291:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9302:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9314:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9326:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9338:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9350:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9362:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9374:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9385:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9396:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9407:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9418:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9430:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9442:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9454:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9466:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9478:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9490:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9501:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9512:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9523:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9534:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9546:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9558:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9570:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9582:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9594:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9606:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9617:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9628:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9639:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9650:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9662:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9674:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9686:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9698:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9710:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9722:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9733:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9744:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9755:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9766:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9778:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9790:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9802:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9814:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9826:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9838:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9849:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9860:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9871:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9882:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9894:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9906:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9918:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9930:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9942:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9954:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9965:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9976:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9987:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:9998:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10010:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10022:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10034:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10046:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10058:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10070:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10081:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10092:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10103:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10114:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10126:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10138:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10150:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10162:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10174:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10186:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10197:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10208:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10219:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10230:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10242:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10254:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10266:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10278:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10290:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10302:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10313:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10324:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10335:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10346:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10358:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10370:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10382:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10394:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10406:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10418:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10429:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10440:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10451:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10462:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10474:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10486:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10498:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10510:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10522:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10534:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10545:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10556:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10567:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10578:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10590:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10602:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10614:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10626:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10638:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10650:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10661:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10672:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10683:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10694:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10706:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10718:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10730:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10742:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10754:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10766:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10777:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10788:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10799:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10810:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10822:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10834:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10846:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10858:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10870:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10882:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10893:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10904:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10915:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10926:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10938:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10950:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10962:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10974:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10986:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:10998:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11009:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11020:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11031:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11042:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11054:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11066:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11078:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11090:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11102:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11114:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11125:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11136:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11147:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11158:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11170:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11182:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11194:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11206:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11218:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11230:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11241:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11252:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11263:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11274:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11286:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11298:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11310:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11322:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11334:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11346:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11357:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11368:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11379:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11390:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11402:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11414:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11426:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11438:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11450:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11462:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11473:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11484:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11495:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11506:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11518:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11530:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11542:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11554:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11566:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11578:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11589:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11600:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11611:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11622:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11634:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11646:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11658:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11670:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11682:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11694:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11705:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11716:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11727:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11738:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11750:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11762:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11774:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11786:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11798:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11810:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11821:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11832:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11843:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11854:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11866:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11878:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11890:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11902:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11914:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11926:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11937:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11948:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11959:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11970:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11982:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:11994:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12006:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12018:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12030:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12042:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12053:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12064:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12075:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12086:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12098:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12110:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12122:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12134:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12146:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12158:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12169:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12180:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12191:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12202:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12214:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12226:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12238:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12250:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12262:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12274:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12285:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12296:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12307:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12318:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12330:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12342:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12354:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12366:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12378:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12390:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12401:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12412:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12423:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12434:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12446:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12458:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12470:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12482:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12494:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12506:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12517:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12528:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12539:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12550:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12562:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12574:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12586:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12598:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12610:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12622:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12633:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12644:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12655:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12666:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12678:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12690:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12702:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12714:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12726:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12738:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12749:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12760:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12771:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12782:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12794:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12806:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12818:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12830:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12842:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12854:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12865:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12876:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12887:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12898:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12910:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12922:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12934:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12946:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12958:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12970:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12981:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:12992:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13003:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13014:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13026:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13038:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13050:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13062:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13074:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13086:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13097:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13108:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13119:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13130:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13142:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13154:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13166:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13178:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13190:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13202:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13213:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13224:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13235:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13246:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13258:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13270:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13282:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13294:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13306:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13318:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13329:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13340:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13351:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13362:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13374:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13386:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13398:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13410:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13422:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13434:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13445:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13456:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13467:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13478:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13490:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13502:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13514:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13526:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13538:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13550:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13561:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13572:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13583:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13594:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13606:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13618:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13630:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13642:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13654:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13666:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13677:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13688:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13699:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13710:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13722:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13734:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13746:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13758:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13770:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13782:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13793:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13804:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13815:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13826:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13838:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13850:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13862:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13874:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13886:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13898:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13909:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13920:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13931:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13942:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13954:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13966:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13978:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:13990:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14002:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14014:      "domain": "phi",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14025:      "domain": "silver",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14036:      "domain": "bronze",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14047:      "domain": "periodic_ab",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14058:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14070:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14082:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14094:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14106:      "domain": "balanced_random_phi_density",
tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json:14118:      "domain": "balanced_random_phi_density",
tools/data/notte_20260315_0330.md:4:  ising_2d_var_-0.1: r=0.9602566405292896, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260315_0330.md:5:  ising_2d_var_0.1: r=0.9986428486385872, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260315_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260315_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260315_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260315_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260315_0330.md:10:  brownian_motion_var_0.3: r=1.0, spacing=Poisson-like (⟨r⟩=0.3838122862269985)
tools/data/notte_20260315_0330.md:11:  brownian_motion_var_0.5: r=1.0333333333333334, spacing=Poisson-like (⟨r⟩=0.3993170059645738)
tools/data/notte_20260315_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260315_0330.md:13:  percolation_var_0.55: r=1.0, spacing=Poisson-like (⟨r⟩=0.462727043125885)
tools/data/notte_20260315_0330.md:14:  percolation_var_0.65: r=1.380952380952381, spacing=Poisson-like (⟨r⟩=0.444154396971446)
tools/data/notte_20260315_0330.md:44:## Fase 4: Cross-domain
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:2:  "experiment": "prime_sr_persistent_boundary",
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:3:  "question": "Does SR remain a prime-specific one-sided boundary signature across providers, offsets, and broader non-prime controls?",
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:36:    "out": "tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json"
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:40:    "claim": "prime_SR_persistent_boundary holds only if prime windows keep SR as the common one-sided observable across providers and offsets while broadened non-prime controls do not share full SR persistence",
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:43:    "generator": "prime gaps from dnd_autoricerca row_spacings and direct sieve; controls from composite gaps, mod6 candidates, Cramer-like events, GUE random matrix blocks, logistic return intervals",
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:44:    "denominator": "8 prime row-local windows plus 20 non-prime controls (3 deterministic families x 4 offsets + 4 stochastic GUE/logistic cases each by default)",
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:45:    "non_possible": "prime-specific SR boundary if prime SR rate falls below 8/8, if prime common obs is not exactly [SR], or if any control subfamily shares full SR persistence",
tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json:46:    "not_tested": "global beta atlas, V_c, gap_ratio, source GUE/Poisson labels, analytic origin of SR"
tools/data/aeternitas/aeternitas_20260505_111548.json:24:        "SELECTIVE_BOUNDARY_OPERATOR_DEPENDENCE"
tools/data/exp_acf_range_universality.json:251:  "cross_domain": {
tools/data/exp_acf_range_universality.json:380:    "GUE": {
tools/data/exp_acf_range_universality.json:508:    "Poisson": {
tools/data/exp_poisson_convergence.json:3:  "question": "Do beta, <r>, and acf1 predict the same Poisson scale?",
tools/data/risultante_v2.json:31:    "dominance_boundary": {
tools/data/risultante_v2.json:542:      "statistics": "GUE (Katz-Sarnak)"
tools/data/aeternitas/aeternitas_20260508_163804.json:9:          "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/boundary_shuffle_audit.json:6:    "R_GUE": 0.5307,
tools/data/boundary_shuffle_audit.json:7:    "R_Poisson": 0.3863
tools/data/boundary_shuffle_audit.json:9:  "domains": {
tools/data/boundary_shuffle_audit.json:16:      "class_original": "GUE",
tools/data/boundary_shuffle_audit.json:17:      "class_shuffled": "GUE",
tools/data/boundary_shuffle_audit.json:27:      "class_original": "GUE",
tools/data/boundary_shuffle_audit.json:28:      "class_shuffled": "GUE",
tools/data/boundary_shuffle_audit.json:38:      "class_original": "GUE",
tools/data/boundary_shuffle_audit.json:39:      "class_shuffled": "Poisson",
tools/data/boundary_shuffle_audit.json:49:      "class_original": "GUE",
tools/data/boundary_shuffle_audit.json:50:      "class_shuffled": "Poisson",
tools/data/boundary_shuffle_audit.json:60:      "class_original": "GUE",
tools/data/boundary_shuffle_audit.json:61:      "class_shuffled": "Poisson",
tools/data/boundary_shuffle_audit.json:71:      "class_original": "Poisson",
tools/data/boundary_shuffle_audit.json:72:      "class_shuffled": "Poisson",
tools/data/boundary_shuffle_audit.json:82:      "class_original": "Poisson",
tools/data/boundary_shuffle_audit.json:83:      "class_shuffled": "Poisson",
tools/data/boundary_shuffle_audit.json:93:      "class_original": "Poisson",
tools/data/boundary_shuffle_audit.json:94:      "class_shuffled": "Poisson",
tools/data/boundary_shuffle_audit.json:104:      "class_original": "GUE",
tools/data/boundary_shuffle_audit.json:105:      "class_shuffled": "GUE",
tools/data/boundary_shuffle_audit.json:115:      "class_original": "GUE",
tools/data/boundary_shuffle_audit.json:116:      "class_shuffled": "GUE",
tools/data/boundary_shuffle_audit.json:126:    "finding": "Two kinds of GUE: distribution-GUE (primes, random matrices) vs ordering-GUE (fibonacci, coupled oscillators, percolation). Sign of delta_r discriminates."
tools/data/notte_20260305_0330.md:4:  ising_2d_var_-0.1: r=0.9823754433241959, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260305_0330.md:5:  ising_2d_var_0.1: r=1.1807959337242486, spacing=GUE-like (⟨r⟩=1.0)
tools/data/notte_20260305_0330.md:6:  numeri_primi_var_100000: r=0.8615840174827735, spacing=GUE-like (⟨r⟩=0.9609375)
tools/data/notte_20260305_0330.md:7:  logistica_biforcazione_var_3.57: r=1.0, spacing=Poisson-like (⟨r⟩=0.35930230610663094)
tools/data/notte_20260305_0330.md:8:  logistica_biforcazione_var_3.9: r=1.000545256270447, spacing=Poisson-like (⟨r⟩=0.3914428894887236)
tools/data/notte_20260305_0330.md:9:  cellular_automata_var_30: r=0.8703941780326052, spacing=GUE-like (⟨r⟩=0.8649999999999983)
tools/data/notte_20260305_0330.md:10:  brownian_motion_var_0.3: r=0.9588638589618023, spacing=Poisson-like (⟨r⟩=0.38926362061125996)
tools/data/notte_20260305_0330.md:11:  brownian_motion_var_0.5: r=1.0, spacing=Poisson-like (⟨r⟩=0.39461461269967785)
tools/data/notte_20260305_0330.md:12:  coupled_oscillators_var_50: r=1.0, spacing=Poisson-like (⟨r⟩=0.45756422661060286)
tools/data/notte_20260305_0330.md:13:  percolation_var_0.55: r=1.0, spacing=Poisson-like (⟨r⟩=0.4270878077372399)
tools/data/notte_20260305_0330.md:14:  percolation_var_0.65: r=1.127659574468085, spacing=Poisson-like (⟨r⟩=0.43169596436963903)
tools/data/notte_20260305_0330.md:44:## Fase 4: Cross-domain
tools/data/duality_gate_transfer_20260507_2042.json:4:  "question": "Does the denominator-collapse gate transfer from BOUNDARY to DUALITA_DIPOLARE_VS_ILLUSORIA?",
tools/data/scale_selective_perturbation.json:394:  "GUE": {
tools/data/operator_directive_consumed_20260507_0803.md:3:**Contesto.** I 9 cycle precedenti hanno tutti attaccato BOUNDARY (8 GUE / 5 Poisson) producendo 3 gate metodologici cristallizzati: OBSERVABLE_REGISTRY, PERTURBATION_DENOMINATOR_GATE, BOUNDARY_LAYER_GATE (denominator collapse layer beta 0.3-0.4). Le altre 6 tensioni-sorgente sono ferme da settimane. Il sistema (Godel) ha posto la domanda critica:
tools/data/operator_directive_consumed_20260507_0803.md:5:> I tre gate cristallizzati sono **operatori generali trasferibili** o **metriche locali** vestite da gate? Se il gate "denominator collapse layer" si applica anche a trascendenza, dualità, G — allora BOUNDARY non è un asse, è il metodo. I 9 cicli hanno prodotto lo strumento, non il risultato. Se i gate funzionano solo su BOUNDARY — sono metriche locali e R+1=R: il campo è saturo.
tools/data/operator_directive_consumed_20260507_0803.md:9:Lavora **NON su BOUNDARY**. Lavora applicando `BOUNDARY_LAYER_GATE` (il gate denominator-collapse cristallizzato dal cycle 20260506_1955) come strumento di analisi sulla tensione `DUALITA_DIPOLARE_VS_ILLUSORIA`.
tools/data/operator_directive_consumed_20260507_0803.md:25:3. Applica `BOUNDARY_LAYER_GATE`: gate beta abs(z)>=2 sui denominatori, layer 0.3-0.4. Misura quale famiglia attraversa il gate e quale collassa.
tools/data/operator_directive_consumed_20260507_0803.md:31:- ❌ **Gate locale**: il gate non discrimina o produce solo flagging artefattuale (z marginal, beta non separa, falliscono shuffle test). I 9 cycle hanno **scavato una buca su BOUNDARY**. Il prossimo passo è pivot vero a un'altra tensione-sorgente da zero (cambia generatore, non solo target).
tools/data/aeternitas/aeternitas_20260505_110204.json:30:        "SELECTIVE_BOUNDARY_OPERATOR_DEPENDENCE"
tools/data/aeternitas/aeternitas_20260508_033454.json:9:          "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/aeternitas/aeternitas_20260514_133424.json:20:        "TRANS_BOUNDARY_TRASCENDENZA_LIMITE"
tools/data/aeternitas/aeternitas_20260508_002036.json:9:          "id": "TRANS_BOUNDARY_TRASCENDENZA_LIMITE",
tools/data/aeternitas/aeternitas_20260508_002036.json:37:        "TRANS_BOUNDARY_TRASCENDENZA_LIMITE"

exec
/bin/bash -lc "sed -n '1,280p' tools/exp_boundary_denominator_prescan.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
exp_boundary_denominator_prescan.py

Boundary-oriented prescan for transferring the `denominator_state` gate beyond
V_c. The unit under test is not the GUE/Poisson label. The unit is the
domain/window row before a structural claim is allowed to use its observable.

Input deposits:
- tools/data/autoricerca_journal.json: base 13-domain GUE/Poisson perimeter.
- tools/data/boundary_shuffle_audit.json: available shuffle/null support.

Output:
- one row per base domain/window with source type, denominator_state,
  excluded_mass, observable, null/surrogate, and transfer verdict.
"""

from __future__ import annotations

import argparse
import json
import math
from pathlib import Path
from typing import Any


DEFAULT_DOMAIN_KEY = {
    "numeri_primi": "primes",
    "random_matrix": "gue",
    "logistica_biforcazione": "logistic",
    "ising_2d": "ising_2d",
    "cellular_automata": "cell_auto",
    "brownian_motion": "brownian",
    "percolation": "percolation",
    "coupled_oscillators": "coupled_osc",
    "zeta_zeros": "zeta_zeros",
    "pendolo_doppio": "pendolo_doppio",
}


def is_base_cycle(value: Any) -> bool:
    if isinstance(value, int):
        return 1 <= value <= 13
    if isinstance(value, float):
        return value.is_integer() and 1 <= int(value) <= 13
    return False


def finite_number(value: Any) -> bool:
    return isinstance(value, (int, float)) and math.isfinite(float(value))


def load_json(path: Path) -> Any:
    with path.open() as f:
        return json.load(f)


def source_type(spacing: str | None) -> str:
    if spacing == "GUE-like":
        return "GUE"
    if spacing == "Poisson-like":
        return "Poisson"
    if spacing:
        return spacing
    return "absent"


def null_label(null_row: dict[str, Any] | None) -> str:
    if not null_row:
        return "absent"
    z = null_row.get("z_score")
    if finite_number(z):
        return f"shuffle z={float(z):.2f}; class_change={bool(null_row.get('class_changes'))}"
    return "shuffle present; z absent"


def classify_denominator(row: dict[str, Any], null_row: dict[str, Any] | None) -> tuple[str, float, str]:
    observable_defined = finite_number(row.get("spacing_r")) and row.get("spacing") in {
        "GUE-like",
        "Poisson-like",
    }
    if not observable_defined:
        return "absent", 1.0, "falls"

    if null_row is None:
        return "absent", 1.0, "blank"

    n_gaps = null_row.get("n_gaps")
    z = null_row.get("z_score")
    has_null = finite_number(n_gaps) and finite_number(z)
    if not has_null:
        return "broken", 1.0, "falls"

    excluded_mass = 0.0
    state = "complete"
    if int(n_gaps) < 500:
        state = "contaminated"
        excluded_mass = 1.0 - (float(n_gaps) / 500.0)

    return state, max(0.0, excluded_mass), "transfers"


def build_rows(autoricerca: list[dict[str, Any]], shuffle_audit: dict[str, Any]) -> list[dict[str, Any]]:
    base_rows = [row for row in autoricerca if is_base_cycle(row.get("ciclo"))]
    base_rows.sort(key=lambda row: int(row["ciclo"]))
    null_domains = shuffle_audit.get("domains", {})

    rows = []
    for row in base_rows:
        domain = row.get("dominio", "")
        null_key = DEFAULT_DOMAIN_KEY.get(domain, domain)
        null_row = null_domains.get(null_key)
        denominator_state, excluded_mass, transfer = classify_denominator(row, null_row)
        rows.append(
            {
                "domain_window": f"{domain}:cycle_{int(row['ciclo'])}",
                "domain": domain,
                "cycle": int(row["ciclo"]),
                "source_domain_type": source_type(row.get("spacing")),
                "denominator_state": denominator_state,
                "excluded_mass": round(excluded_mass, 6),
                "observable": {
                    "name": "spacing_r",
                    "defined": finite_number(row.get("spacing_r")),
                    "value": row.get("spacing_r"),
                    "label": row.get("spacing"),
                    "n_points": row.get("n_punti"),
                },
                "null_surrogate": {
                    "name": "shuffle_r_statistic",
                    "status": null_label(null_row),
                    "domain_key": null_key if null_row else None,
                    "n_gaps": null_row.get("n_gaps") if null_row else None,
                    "r_shuffled_mean": null_row.get("r_shuffled_mean") if null_row else None,
                    "z_score": null_row.get("z_score") if null_row else None,
                    "class_changes": null_row.get("class_changes") if null_row else None,
                },
                "transfer": transfer,
            }
        )
    return rows


def merge_extra_null_audit(shuffle_audit: dict[str, Any], extra_paths: list[str]) -> dict[str, Any]:
    merged = {
        **shuffle_audit,
        "domains": dict(shuffle_audit.get("domains", {})),
    }
    extras = []
    for raw_path in extra_paths:
        path = Path(raw_path)
        if not path.exists():
            continue
        data = load_json(path)
        domains = data.get("domains", {}) if isinstance(data, dict) else {}
        for domain, row in domains.items():
            if not isinstance(row, dict) or "error" in row:
                continue
            merged["domains"][domain] = row
        extras.append(str(path))
    if extras:
        merged["extra_null_audits"] = extras
    return merged


def summarize(rows: list[dict[str, Any]]) -> dict[str, Any]:
    by_transfer: dict[str, int] = {}
    by_state: dict[str, int] = {}
    by_type: dict[str, int] = {}
    for row in rows:
        by_transfer[row["transfer"]] = by_transfer.get(row["transfer"], 0) + 1
        by_state[row["denominator_state"]] = by_state.get(row["denominator_state"], 0) + 1
        by_type[row["source_domain_type"]] = by_type.get(row["source_domain_type"], 0) + 1
    return {
        "n_rows": len(rows),
        "by_transfer": by_transfer,
        "by_denominator_state": by_state,
        "by_source_domain_type": by_type,
        "transfer_scope": [
            row["domain_window"] for row in rows if row["transfer"] == "transfers"
        ],
        "blank_scope": [row["domain_window"] for row in rows if row["transfer"] == "blank"],
        "falls_scope": [row["domain_window"] for row in rows if row["transfer"] == "falls"],
    }


def run(args: argparse.Namespace) -> dict[str, Any]:
    autoricerca = load_json(Path(args.autoricerca))
    shuffle_audit = load_json(Path(args.shuffle_audit))
    if args.extra_null_audit:
        shuffle_audit = merge_extra_null_audit(shuffle_audit, args.extra_null_audit)
    rows = build_rows(autoricerca, shuffle_audit)
    output = {
        "experiment": "boundary_denominator_prescan",
        "question": "Does denominator_state transfer beyond V_c on the 8 GUE / 5 Poisson boundary perimeter?",
        "perimeter": "base autoricerca cycles 1..13: 8 GUE-like, 5 Poisson-like",
        "observable_contract": {
            "claim": "denominator_state gate transfer beyond V_c",
            "observable": "spacing_r label row with shuffle/null availability",
            "operator": "row-aligned domain/window prescan",
            "null": "boundary_shuffle_audit shuffle r-statistic when present",
            "non_possible": "claiming transfer where null/surrogate is absent",
            "extra_null_audits": shuffle_audit.get("extra_null_audits", []),
        },
        "summary": summarize(rows),
        "rows": rows,
    }

    out_path = Path(args.out)
    out_path.parent.mkdir(parents=True, exist_ok=True)
    with out_path.open("w") as f:
        json.dump(output, f, indent=2)

    print(f"wrote={out_path}")
    print(f"rows={output['summary']['n_rows']}")
    print(f"by_transfer={output['summary']['by_transfer']}")
    print(f"by_denominator_state={output['summary']['by_denominator_state']}")
    for row in rows:
        print(
            f"{row['domain_window']}\t{row['source_domain_type']}\t"
            f"{row['denominator_state']}\t{row['excluded_mass']:.3f}\t"
            f"{row['transfer']}\t{row['null_surrogate']['status']}"
        )
    return output


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--autoricerca", default="tools/data/autoricerca_journal.json")
    parser.add_argument("--shuffle-audit", default="tools/data/boundary_shuffle_audit.json")
    parser.add_argument("--extra-null-audit", action="append", default=[])
    parser.add_argument("--out", default="tools/data/boundary_denominator_prescan_20260509_1409.json")
    args = parser.parse_args()
    run(args)


if __name__ == "__main__":
    main()

exec
/bin/bash -lc "sed -n '1,240p' tools/exp_boundary_mixture_gate.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
exp_boundary_mixture_gate.py

Reusable META/BOUNDARY audit for the GUE-Poisson boundary.

Question:
    Does the GUE/Poisson boundary remain a clean two-class split after the
    original-vs-shuffle denominator gate, or is the mixed region an operational
    third state where canonical observables lose stable denominators?

The script uses only canonical observables from observables_registry.py.
It builds synthetic mixtures by replacing a fraction beta of unfolded GUE
spacings with Poisson spacings, then measures:

- canonical observable vectors;
- original-vs-shuffle z-score per observable;
- endpoint separability in all observables and in gate-stable observables;
- ambiguity of each beta layer relative to pure GUE and pure Poisson centroids.
"""

from __future__ import annotations

import argparse
import json
from pathlib import Path

import numpy as np

from observables_registry import (
    OBSERVABLES_CANONICAL,
    OBSERVABLES_REGISTRY_VERSION,
    compute_canonical,
)


OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())


def gue_spacings(matrix_size: int, min_spacings: int, rng: np.random.Generator) -> np.ndarray:
    """Generate unfolded GUE spacings by concatenating independent matrices."""
    parts: list[np.ndarray] = []
    edge = max(2, matrix_size // 10)
    while sum(len(x) for x in parts) < min_spacings:
        real = rng.standard_normal((matrix_size, matrix_size))
        imag = rng.standard_normal((matrix_size, matrix_size))
        h = real + 1j * imag
        h = (h + h.conj().T) / (2.0 * np.sqrt(matrix_size))
        eigs = np.sort(np.linalg.eigvalsh(h).real)
        bulk = eigs[edge:-edge]
        gaps = np.diff(bulk)
        mean = float(np.mean(gaps))
        if mean > 1e-15:
            parts.append(gaps / mean)
    return np.concatenate(parts)[:min_spacings].astype(float)


def mixture_spacings(gue: np.ndarray, poisson: np.ndarray, beta: float, rng: np.random.Generator) -> np.ndarray:
    """Return a beta Poisson / (1-beta) GUE spacing sequence with mean spacing 1."""
    if len(gue) != len(poisson):
        raise ValueError("gue and poisson arrays must have the same length")
    mask = rng.random(len(gue)) < beta
    out = gue.copy()
    out[mask] = poisson[mask]
    mean = float(np.mean(out))
    return out / mean if mean > 1e-15 else out


def z_against_shuffle(
    gaps: np.ndarray,
    n_baseline: int,
    rng: np.random.Generator,
) -> tuple[dict[str, float], dict[str, float], dict[str, float]]:
    """Return original observables, shuffle baseline std, and original-vs-shuffle z."""
    original = compute_canonical(gaps)
    baseline_vals = {name: [] for name in OBS_NAMES}
    for _ in range(n_baseline):
        obs = compute_canonical(rng.permutation(gaps))
        for name in OBS_NAMES:
            baseline_vals[name].append(obs[name])

    std = {}
    z = {}
    for name in OBS_NAMES:
        vals = np.array(baseline_vals[name], dtype=float)
        mean = float(np.mean(vals))
        sd = float(np.std(vals, ddof=1)) if len(vals) > 1 else 0.0
        std[name] = sd
        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
    return original, std, z


def vector(row: dict, names: list[str]) -> np.ndarray:
    return np.array([row["observables"][name] for name in names], dtype=float)


def classify_layers(rows: list[dict], obs_names: list[str]) -> dict:
    """Classify each beta layer by standardized distance to endpoint centroids."""
    if not obs_names:
        return {
            "observables": [],
            "endpoint_distance": 0.0,
            "layers": {},
            "ambiguous_beta": [],
        }

    by_beta: dict[float, list[dict]] = {}
    for row in rows:
        by_beta.setdefault(float(row["beta"]), []).append(row)

    gue_vectors = np.array([vector(row, obs_names) for row in by_beta[0.0]], dtype=float)
    poi_vectors = np.array([vector(row, obs_names) for row in by_beta[1.0]], dtype=float)
    all_endpoint = np.vstack([gue_vectors, poi_vectors])
    scale = np.std(all_endpoint, axis=0, ddof=1)
    scale[scale <= 1e-15] = 1.0
    gue_centroid = np.mean(gue_vectors, axis=0)
    poi_centroid = np.mean(poi_vectors, axis=0)
    endpoint_distance = float(np.linalg.norm((poi_centroid - gue_centroid) / scale))

    layers = {}
    ambiguous_beta = []
    for beta, beta_rows in sorted(by_beta.items()):
        coords = []
        margins = []
        labels = []
        for row in beta_rows:
            x = vector(row, obs_names)
            d_gue = float(np.linalg.norm((x - gue_centroid) / scale))
            d_poi = float(np.linalg.norm((x - poi_centroid) / scale))
            denom = d_gue + d_poi
            coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
            margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
            coords.append(coord)
            margins.append(margin)
            labels.append("gue" if d_gue < d_poi else "poisson")
        ambiguous_fraction = float(np.mean(np.array(margins) < 0.15))
        if ambiguous_fraction >= 0.5:
            ambiguous_beta.append(beta)
        layers[f"{beta:.3f}"] = {
            "coordinate_mean": float(np.mean(coords)),
            "coordinate_std": float(np.std(coords, ddof=1)) if len(coords) > 1 else 0.0,
            "margin_mean": float(np.mean(margins)),
            "ambiguous_fraction": ambiguous_fraction,
            "poisson_label_fraction": float(np.mean(np.array(labels) == "poisson")),
        }

    return {
        "observables": obs_names,
        "endpoint_distance": endpoint_distance,
        "layers": layers,
        "ambiguous_beta": ambiguous_beta,
    }


def summarize_gate(rows: list[dict], z_min: float) -> dict:
    by_beta: dict[float, list[dict]] = {}
    for row in rows:
        by_beta.setdefault(float(row["beta"]), []).append(row)

    layers = {}
    for beta, beta_rows in sorted(by_beta.items()):
        stable_counts = []
        stable_freq = {name: [] for name in OBS_NAMES}
        for row in beta_rows:
            stable = [name for name in OBS_NAMES if abs(row["z"][name]) >= z_min]
            stable_counts.append(len(stable))
            for name in OBS_NAMES:
                stable_freq[name].append(1.0 if name in stable else 0.0)
        layers[f"{beta:.3f}"] = {
            "stable_count_mean": float(np.mean(stable_counts)),
            "stable_count_std": float(np.std(stable_counts, ddof=1)) if len(stable_counts) > 1 else 0.0,
            "stable_frequency": {name: float(np.mean(vals)) for name, vals in stable_freq.items()},
        }

    endpoint_stable = []
    for name in OBS_NAMES:
        endpoint_rows = by_beta[0.0] + by_beta[1.0]
        freq = np.mean([1.0 if abs(row["z"][name]) >= z_min else 0.0 for row in endpoint_rows])
        if freq >= 0.75:
            endpoint_stable.append(name)

    return {
        "z_min": z_min,
        "endpoint_stable_observables": endpoint_stable,
        "layers": layers,
    }


def run(args: argparse.Namespace) -> dict:
    rng = np.random.default_rng(args.seed)
    betas = [float(x) for x in np.linspace(0.0, 1.0, args.n_beta)]
    rows = []

    for rep in range(args.n_replicates):
        rep_rng = np.random.default_rng(rng.integers(0, 2**63 - 1))
        gue = gue_spacings(args.gue_matrix_size, args.n_gaps, rep_rng)
        poisson = rep_rng.exponential(1.0, size=args.n_gaps)
        poisson = poisson / float(np.mean(poisson))
        for beta in betas:
            layer_rng = np.random.default_rng(rng.integers(0, 2**63 - 1))
            gaps = mixture_spacings(gue, poisson, beta, layer_rng)
            obs, shuffle_std, z = z_against_shuffle(
                gaps,
                n_baseline=args.n_baseline,
                rng=np.random.default_rng(rng.integers(0, 2**63 - 1)),
            )
            rows.append(
                {
                    "replicate": rep,
                    "beta": beta,
                    "observables": obs,
                    "shuffle_std": shuffle_std,
                    "z": z,
                    "stable_observables": [name for name in OBS_NAMES if abs(z[name]) >= args.z_min],
                }
            )

    gate = summarize_gate(rows, args.z_min)
    all_classification = classify_layers(rows, OBS_NAMES)
    gated_classification = classify_layers(rows, gate["endpoint_stable_observables"])

    output = {
        "experiment": "boundary_mixture_gate",
        "question": "Is the GUE-Poisson mixed layer cleanly classifiable after denominator gating?",
        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
        "observables_used": OBS_NAMES,
        "params": vars(args),
        "gate": gate,
        "classification_all_observables": all_classification,
        "classification_endpoint_gated": gated_classification,
        "rows": rows,
    }

    out_path = Path(args.out)
    out_path.parent.mkdir(parents=True, exist_ok=True)
    with out_path.open("w") as f:
        json.dump(output, f, indent=2)

    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
    print(f"observables_used={OBS_NAMES}")

exec
/bin/bash -lc "python -m json.tool tools/data/boundary_shuffle_audit.json | sed -n '1,220p'" in /opt/MM_D-ND
 succeeded in 0ms:
{
    "timestamp": "2026-04-24T03:45:04.606083",
    "method": "shuffle_audit_r_statistic",
    "n_shuffle": 1000,
    "reference": {
        "R_GUE": 0.5307,
        "R_Poisson": 0.3863
    },
    "domains": {
        "primes": {
            "r_original": 0.4622,
            "r_shuffled_mean": 0.4813,
            "r_shuffled_std": 0.0007,
            "z_score": -26.6,
            "n_gaps": 99999,
            "class_original": "GUE",
            "class_shuffled": "GUE",
            "class_changes": false,
            "ordering_dependent": true
        },
        "gue": {
            "r_original": 0.5995,
            "r_shuffled_mean": 0.6351,
            "r_shuffled_std": 0.0024,
            "z_score": -14.7,
            "n_gaps": 5020,
            "class_original": "GUE",
            "class_shuffled": "GUE",
            "class_changes": false,
            "ordering_dependent": true
        },
        "fibonacci": {
            "r_original": 0.4782,
            "r_shuffled_mean": 0.4073,
            "r_shuffled_std": 0.0089,
            "z_score": 8.0,
            "n_gaps": 609,
            "class_original": "GUE",
            "class_shuffled": "Poisson",
            "class_changes": true,
            "ordering_dependent": true
        },
        "coupled_osc": {
            "r_original": 0.8775,
            "r_shuffled_mean": 0.4146,
            "r_shuffled_std": 0.0106,
            "z_score": 43.5,
            "n_gaps": 427,
            "class_original": "GUE",
            "class_shuffled": "Poisson",
            "class_changes": true,
            "ordering_dependent": true
        },
        "percolation": {
            "r_original": 0.6551,
            "r_shuffled_mean": 0.4508,
            "r_shuffled_std": 0.0127,
            "z_score": 16.1,
            "n_gaps": 510,
            "class_original": "GUE",
            "class_shuffled": "Poisson",
            "class_changes": true,
            "ordering_dependent": true
        },
        "logistic": {
            "r_original": 0.3887,
            "r_shuffled_mean": 0.3423,
            "r_shuffled_std": 0.0008,
            "z_score": 61.6,
            "n_gaps": 99999,
            "class_original": "Poisson",
            "class_shuffled": "Poisson",
            "class_changes": false,
            "ordering_dependent": true
        },
        "poisson": {
            "r_original": 0.3847,
            "r_shuffled_mean": 0.3856,
            "r_shuffled_std": 0.0007,
            "z_score": -1.1,
            "n_gaps": 100000,
            "class_original": "Poisson",
            "class_shuffled": "Poisson",
            "class_changes": false,
            "ordering_dependent": false
        },
        "brownian": {
            "r_original": 0.3148,
            "r_shuffled_mean": 0.3324,
            "r_shuffled_std": 0.0108,
            "z_score": -1.6,
            "n_gaps": 650,
            "class_original": "Poisson",
            "class_shuffled": "Poisson",
            "class_changes": false,
            "ordering_dependent": false
        },
        "ising_2d": {
            "r_original": 0.9858,
            "r_shuffled_mean": 0.9859,
            "r_shuffled_std": 0.0009,
            "z_score": -0.1,
            "n_gaps": 95,
            "class_original": "GUE",
            "class_shuffled": "GUE",
            "class_changes": false,
            "ordering_dependent": false
        },
        "cell_auto": {
            "r_original": 0.8446,
            "r_shuffled_mean": 0.8455,
            "r_shuffled_std": 0.0137,
            "z_score": -0.1,
            "n_gaps": 105,
            "class_original": "GUE",
            "class_shuffled": "GUE",
            "class_changes": false,
            "ordering_dependent": false
        }
    },
    "summary": {
        "n_structural": 6,
        "n_tautological": 4,
        "n_class_change": 3,
        "total": 10,
        "finding": "Two kinds of GUE: distribution-GUE (primes, random matrices) vs ordering-GUE (fibonacci, coupled oscillators, percolation). Sign of delta_r discriminates."
    }
}

exec
/bin/bash -lc "python -m json.tool tools/data/autoricerca_journal.json | sed -n '1,220p'" in /opt/MM_D-ND
 succeeded in 0ms:
[
    {
        "ciclo": 1,
        "dominio": "ising_2d",
        "timestamp": "2026-03-01T20:51:01.226798",
        "n_punti": 5000,
        "r_diretto": 0.9899735371949426,
        "punto_fisso": 1.618033988754382,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6181003744227653,
        "spacing": "GUE-like",
        "spacing_r": 0.9022289766970617,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 2,
        "dominio": "pendolo_doppio",
        "timestamp": "2026-03-01T20:51:01.800132",
        "n_punti": 5009,
        "r_diretto": 0.9996007984031936,
        "punto_fisso": 1.6180339887543265,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.618013050556921,
        "spacing": "Poisson-like",
        "spacing_r": 0.38610398536946516,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 3,
        "dominio": "numeri_primi",
        "timestamp": "2026-03-01T20:51:01.817190",
        "n_punti": 5132,
        "r_diretto": 0.762330388277594,
        "punto_fisso": 1.6180339887570814,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180415569821247,
        "spacing": "GUE-like",
        "spacing_r": 0.8862068965517241,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 4,
        "dominio": "zeta_zeros",
        "timestamp": "2026-03-01T20:51:44.693166",
        "n_punti": 199,
        "r_diretto": 0.99,
        "punto_fisso": 1.6180339887544222,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6181659442748706,
        "spacing": "GUE-like",
        "spacing_r": 0.615,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "nota_fix": "corretto: is_spacings=True, era Poisson per bug sort"
    },
    {
        "ciclo": 5,
        "dominio": "logistica_biforcazione",
        "timestamp": "2026-03-01T20:51:44.711636",
        "n_punti": 5000,
        "r_diretto": 1.0,
        "punto_fisso": 1.6180339887543227,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180861695660687,
        "spacing": "GUE-like",
        "spacing_r": 0.997077776975089,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 6,
        "dominio": "string_vibration",
        "timestamp": "2026-03-01T20:51:44.735612",
        "n_punti": 8000,
        "r_diretto": 1.0,
        "punto_fisso": 1.6180339887543227,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180861695660687,
        "spacing": "Poisson-like",
        "spacing_r": 0.3838680180747297,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 7,
        "dominio": "random_matrix",
        "timestamp": "2026-03-01T20:51:44.755040",
        "n_punti": 199,
        "r_diretto": 0.9732203389830509,
        "punto_fisso": 1.618033988755606,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180992382029853,
        "spacing": "GUE-like",
        "spacing_r": 0.5726,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "nota_fix": "corretto: is_spacings=True, era Poisson per bug sort"
    },
    {
        "ciclo": 8,
        "dominio": "cellular_automata",
        "timestamp": "2026-03-01T20:51:45.161310",
        "n_punti": 5000,
        "r_diretto": 0.7415534656913967,
        "punto_fisso": 1.6180339887573676,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.618052995798036,
        "spacing": "GUE-like",
        "spacing_r": 0.8613707165109022,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 9,
        "dominio": "percolation",
        "timestamp": "2026-03-01T21:00:09.139902",
        "n_punti": 200,
        "r_diretto": 0.8184925346285303,
        "punto_fisso": 1.6180339887562567,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.618054344736462,
        "spacing": "Poisson-like",
        "spacing_r": 0.403573544857739,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 10,
        "dominio": "coupled_oscillators",
        "timestamp": "2026-03-01T21:00:09.646527",
        "n_punti": 2004,
        "r_diretto": 1.0,
        "punto_fisso": 1.6180339887543227,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180861695660687,
        "spacing": "Poisson-like",
        "spacing_r": 0.38458802847186335,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 11,
        "dominio": "reaction_diffusion",
        "timestamp": "2026-03-01T21:00:12.357563",
        "n_punti": 500,
        "r_diretto": 1.0,
        "punto_fisso": 1.6180339887543227,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180861695660687,
        "spacing": "GUE-like",
        "spacing_r": 0.7586013467026753,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": []
    },
    {
        "ciclo": 12,
        "dominio": "brownian_motion",
        "timestamp": "2026-03-01T21:00:12.521960",
        "n_punti": 5000,
        "r_diretto": null,
        "punto_fisso": null,
        "piu_vicino": null,
        "alternanza": null,
        "converge": null,
        "gap_ratio": null,
        "spacing": "Poisson-like",
        "spacing_r": 0.4893850507668893,
        "findings": [],
        "vincoli": [
            "nessuna_struttura_dnd"
        ]
    },
    {

exec
/bin/bash -lc "sed -n '1,260p' tools/observables_registry.py" in /opt/MM_D-ND
 succeeded in 0ms:
"""observables_registry.py — Source of Truth per gli observables del lab D-ND.

Cristallizzato 2026-05-06 dalla **consecutio del cycle agent_20260506_0625**:

> "What opens now: the lab needs an observable registry. Labels like SR
>  cannot travel between reports unless they bind to a function definition.
>  Without that, META flags are not philosophical: the same label can
>  silently change the object under test."

## Il problema che ha creato il registry

Il cycle 06:25 ha auto-falsificato il finding del cycle 03:30 ("secondo asse
GUE") e nel farlo ha trovato **collision di nomi observable** tra script:

- `SR` in `exp_selective_layer_decoupling.py` = `spacing_ratio` (mean min/max
  ratio of consecutive gaps) — convention dominante (~6 script)
- `SR` in `exp_scale_selective_perturbation.py` = `spectral_rigidity(gaps)`
  (Δ₃(L) rigidity) — variante usata SOLO in 1 script

- `triple_var` in 3 script = `np.var(triple_sums)` (raw) — convention dominante
- `triple_var` in `exp_perturbation_dimensionality_audit.py` =
  `np.var(triples) / np.var(gaps)` (normalizzato) — variante in 1 script

Il lab autonomo che compara report tra script con osservabili "stesso nome,
funzione diversa" stava confrontando mele con arance.

## La soluzione (minimal, non invasiva)

Questo registry stabilisce il **nome canonico**: ciò che la maggioranza degli
script chiama già `SR`/`triple_var`/etc. Le varianti restano disponibili ma
con nomi ESPLICITI (`SR_local_rigidity`, `triple_var_normalized`) per evitare
mascheramento semantico.

## Come usarlo

```python
from observables_registry import OBSERVABLES_CANONICAL, OBSERVABLES_REGISTRY_VERSION

# Compute canonical observable suite for a sequence of gaps
results = {name: fn(gaps) for name, fn in OBSERVABLES_CANONICAL.items()}

# Or import individual canonical observable
from observables_registry import SR, triple_var, L1, L2, SR2

# For variants, import explicitly with disambiguating name
from observables_registry import SR_local_rigidity, triple_var_normalized
```

## Convention per i report

Ogni report agent (cycle) che usa observables DEVE includere nel suo header:

```
observables_registry: 1.0.0-2026-05-06
observables_used: [SR, SR2, L1, L2, triple_var]
```

Cycle che mescola canonical + variant DEVE indicare entrambi:

```
observables_used: [SR, SR_local_rigidity, ...]
```

Senza questo, i confronti cross-cycle sono inattendibili.

## Versioning

Cambiare una definizione canonica = bump del registry version e nota nel
changelog. Le definizioni canoniche sono **immutabili dentro una versione**.
"""
from __future__ import annotations

import numpy as np


OBSERVABLES_REGISTRY_VERSION = "1.0.0-2026-05-06"


# ─── Canonical observables (convention dominante nel codebase 2026-05-06) ───

def SR(gaps: np.ndarray) -> float:
    """**SR — Spacing Ratio** (canonical).

    Mean of `min(g_i, g_{i+1}) / max(g_i, g_{i+1})` over consecutive gaps.
    Range: (0, 1]. GUE → ~0.60. Poisson → ~0.39. Picket-fence → 1.

    NOTE: questa è la convention dominante in 6+ script del lab.
    Per la variante "local spectral rigidity Δ₃(L)" usare `SR_local_rigidity`.
    """
    if len(gaps) < 2:
        return 0.0
    s, s1 = gaps[:-1], gaps[1:]
    r = np.minimum(s, s1) / np.maximum(s, s1)
    r = r[np.isfinite(r) & (r > 0)]
    return float(np.mean(r)) if len(r) else 0.0


def SR2(gaps: np.ndarray) -> float:
    """**SR2 — Next-nearest Spacing Ratio** (canonical).

    Mean of `min(g_i, g_{i+2}) / max(g_i, g_{i+2})` skipping one gap.
    Probes lag-2 spacing structure.
    """
    if len(gaps) < 3:
        return 0.0
    s, s2 = gaps[:-2], gaps[2:]
    r = np.minimum(s, s2) / np.maximum(s, s2)
    r = r[np.isfinite(r) & (r > 0)]
    return float(np.mean(r)) if len(r) else 0.0


def L1(gaps: np.ndarray) -> float:
    """**L1 — Lag-1 Autocorrelation** (canonical).

    Standard ACF at lag 1 of the gap sequence.
    """
    if len(gaps) < 3:
        return 0.0
    g = gaps - np.mean(gaps)
    c0 = float(np.mean(g ** 2))
    if c0 <= 1e-15:
        return 0.0
    return float(np.mean(g[:-1] * g[1:]) / c0)


def L2(gaps: np.ndarray) -> float:
    """**L2 — Lag-2 Autocorrelation** (canonical)."""
    if len(gaps) < 4:
        return 0.0
    g = gaps - np.mean(gaps)
    c0 = float(np.mean(g ** 2))
    if c0 <= 1e-15:
        return 0.0
    return float(np.mean(g[:-2] * g[2:]) / c0)


def triple_var(gaps: np.ndarray) -> float:
    """**triple_var — Variance of consecutive gap triples** (canonical).

    Variance of `g_i + g_{i+1} + g_{i+2}` over the sequence (RAW, no
    normalization). Convention used in 3+ scripts. For the normalized
    version (variance ratio `var(triples) / var(gaps)`) use
    `triple_var_normalized`.
    """
    if len(gaps) < 3:
        return 0.0
    t = gaps[:-2] + gaps[1:-1] + gaps[2:]
    return float(np.var(t))


# Set canonico per uso "compute all" da report
OBSERVABLES_CANONICAL: dict[str, callable] = {
    "SR": SR,
    "SR2": SR2,
    "L1": L1,
    "L2": L2,
    "triple_var": triple_var,
}


# ─── Variants (esplicitamente nominate, no collision con canonical) ───

def SR_local_rigidity(gaps: np.ndarray, L: int = 10) -> float:
    """**SR_local_rigidity — Δ₃(L) Spectral Rigidity** (variant).

    Different observable than canonical `SR` (spacing ratio). Measures the
    average squared deviation of the cumulative spacing function from the
    best-fit straight line in a window of size L.

    Originated from `exp_scale_selective_perturbation.py` where it was
    locally named `SR` — registered here as `SR_local_rigidity` to avoid
    collision with canonical spacing-ratio definition.

    Use when explicitly studying spectral rigidity, NOT as alias for SR.
    """
    if len(gaps) < 5:
        return 0.0
    cumulative = np.cumsum(gaps)
    if cumulative[-1] <= 1e-15:
        return 0.0
    cumulative = cumulative / cumulative[-1] * len(cumulative)
    n = np.arange(1, len(cumulative) + 1, dtype=float)
    window = int(min(L * len(gaps) / cumulative[-1], len(gaps) // 2))
    if window < 5:
        return 0.0
    residuals = []
    for start in range(0, len(cumulative) - window, max(1, window // 2)):
        end = start + window
        x = n[start:end]
        y = cumulative[start:end]
        a, b = np.polyfit(x, y, 1)
        residuals.append(np.mean((y - (a * x + b)) ** 2))
    return float(np.mean(residuals)) if residuals else 0.0


def triple_var_normalized(gaps: np.ndarray) -> float:
    """**triple_var_normalized — Variance of triples / variance of gaps** (variant).

    Originated from `exp_perturbation_dimensionality_audit.py` where it was
    locally named `triple_var` — registered here as `triple_var_normalized`
    to avoid collision with canonical raw triple variance.

    Use when explicitly studying triple-variance scaling relative to
    single-gap variance, NOT as alias for triple_var.
    """
    if len(gaps) < 3:
        return 0.0
    triples = gaps[:-2] + gaps[1:-1] + gaps[2:]
    v = float(np.var(gaps))
    if v <= 1e-15:
        return 0.0
    return float(np.var(triples) / v)


# Set varianti, importabile esplicitamente
OBSERVABLES_VARIANTS: dict[str, callable] = {
    "SR_local_rigidity": SR_local_rigidity,
    "triple_var_normalized": triple_var_normalized,
}


# ─── Public API ───────────────────────────────────────────────────────

def compute_canonical(gaps: np.ndarray) -> dict[str, float]:
    """Compute all canonical observables for a gap sequence.

    Returns dict {name: value} ready for inclusion in cycle reports.
    """
    return {name: fn(gaps) for name, fn in OBSERVABLES_CANONICAL.items()}


def report_header() -> str:
    """Suggested markdown header line for cycle reports using this registry."""
    canonical_list = ", ".join(OBSERVABLES_CANONICAL.keys())
    return (
        f"observables_registry: {OBSERVABLES_REGISTRY_VERSION}\n"
        f"observables_used: [{canonical_list}]"
    )


__all__ = [
    "OBSERVABLES_REGISTRY_VERSION",
    "OBSERVABLES_CANONICAL",
    "OBSERVABLES_VARIANTS",
    "SR",
    "SR2",
    "L1",
    "L2",
    "triple_var",
    "SR_local_rigidity",
    "triple_var_normalized",
    "compute_canonical",
    "report_header",
]


if __name__ == "__main__":
    # Smoke test: canonical observables on a simple gap series
    rng = np.random.default_rng(42)
    gue_like = rng.gamma(shape=2.0, scale=0.5, size=200)

exec
/bin/bash -lc "sed -n '240,420p' tools/exp_boundary_mixture_gate.py" in /opt/MM_D-ND
 succeeded in 0ms:
    print(f"observables_used={OBS_NAMES}")
    print(f"endpoint_stable_observables={gate['endpoint_stable_observables']}")
    print(
        "endpoint_distance_all="
        f"{all_classification['endpoint_distance']:.3f} "
        "endpoint_distance_gated="
        f"{gated_classification['endpoint_distance']:.3f}"
    )
    if gate["endpoint_stable_observables"]:
        print("beta stable_count margin_gated ambiguous_gated poisson_fraction_gated")
    else:
        print("endpoint gate is empty; printing all-observable classification")
        print("beta stable_count margin_all ambiguous_all poisson_fraction_all")
    for beta in betas:
        key = f"{beta:.3f}"
        stable_count = gate["layers"][key]["stable_count_mean"]
        source = gated_classification if gate["endpoint_stable_observables"] else all_classification
        layer = source["layers"].get(key, {})
        print(
            f"{beta:>4.2f} {stable_count:>12.3f} "
            f"{layer.get('margin_mean', 0.0):>12.3f} "
            f"{layer.get('ambiguous_fraction', 0.0):>15.3f} "
            f"{layer.get('poisson_label_fraction', 0.0):>21.3f}"
        )
    print(f"saved {out_path}")
    return output


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--n-gaps", type=int, default=1536)
    parser.add_argument("--n-replicates", type=int, default=16)
    parser.add_argument("--gue-matrix-size", type=int, default=180)
    parser.add_argument("--n-beta", type=int, default=11)
    parser.add_argument("--n-baseline", type=int, default=24)
    parser.add_argument("--z-min", type=float, default=2.0)
    parser.add_argument("--seed", type=int, default=20260507)
    parser.add_argument("--out", default="tools/data/boundary_mixture_gate.json")
    args = parser.parse_args()
    run(args)


if __name__ == "__main__":
    main()

exec
/bin/bash -lc "python -m json.tool tools/data/autoricerca_journal.json | sed -n '220,360p'" in /opt/MM_D-ND
 succeeded in 0ms:
    {
        "ciclo": 12.5,
        "dominio": "META_r_diretto",
        "timestamp": "2026-03-01T21:00:12.523271",
        "n_punti": 11,
        "r_diretto": 0.9341064602889735,
        "punto_fisso": 1.6180339887532018,
        "piu_vicino": "\u03c6",
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6179961138648857,
        "findings": [
            "meta_autologica"
        ],
        "vincoli": [],
        "nota": "D-ND applicato ai propri r_diretto"
    },
    {
        "ciclo": 12.1,
        "dominio": "ising_2d_var_-0.1",
        "timestamp": "2026-03-02T03:30:42.963399",
        "n_punti": 3072000,
        "r_diretto": 0.9544449807275661,
        "punto_fisso": 1.6180339887550417,
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.618000627518817,
        "spacing": "GUE-like",
        "spacing_r": 1.0,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "variante": true,
        "params": {
            "T_offset": -0.1
        }
    },
    {
        "ciclo": 12.1,
        "dominio": "ising_2d_var_0.1",
        "timestamp": "2026-03-02T03:31:22.172551",
        "n_punti": 3072000,
        "r_diretto": 1.0346055137014654,
        "punto_fisso": 1.6180339887539872,
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.618010024331583,
        "spacing": "GUE-like",
        "spacing_r": 1.0,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "variante": true,
        "params": {
            "T_offset": 0.1
        }
    },
    {
        "ciclo": 12.1,
        "dominio": "numeri_primi_var_100000",
        "timestamp": "2026-03-02T03:31:22.198946",
        "n_punti": 9591,
        "r_diretto": 0.8615840174827735,
        "punto_fisso": 1.6180339887558233,
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180740677926337,
        "spacing": "GUE-like",
        "spacing_r": 0.9609375,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "variante": true,
        "params": {
            "max_n": 100000
        }
    },
    {
        "ciclo": 12.1,
        "dominio": "logistica_biforcazione_var_3.57",
        "timestamp": "2026-03-02T03:31:22.213137",
        "n_punti": 5000,
        "r_diretto": 1.0,
        "punto_fisso": 1.6180339887543227,
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180861695660687,
        "spacing": "Poisson-like",
        "spacing_r": 0.35930230610663094,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "variante": true,
        "params": {
            "r_override": 3.57
        }
    },
    {
        "ciclo": 12.1,
        "dominio": "logistica_biforcazione_var_3.9",
        "timestamp": "2026-03-02T03:31:22.227242",
        "n_punti": 5000,
        "r_diretto": 1.000545256270447,
        "punto_fisso": 1.6180339887543185,
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6181579718861103,
        "spacing": "Poisson-like",
        "spacing_r": 0.3914428894887236,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "variante": true,
        "params": {
            "r_override": 3.9
        }
    },
    {
        "ciclo": 12.1,
        "dominio": "cellular_automata_var_30",
        "timestamp": "2026-03-02T03:31:22.608573",
        "n_punti": 5000,
        "r_diretto": 0.8703941780326052,
        "punto_fisso": 1.618033988755712,
        "alternanza": true,
        "converge": true,
        "gap_ratio": 2.6180953435671506,
        "spacing": "GUE-like",
        "spacing_r": 0.8649999999999983,
        "findings": [
            "struttura_dnd_piena"
        ],
        "vincoli": [],
        "variante": true,
        "params": {
            "rule_number": 30

exec
/bin/bash -lc "sed -n '1,180p' tools/exp_boundary_blank_null_audit.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
exp_boundary_blank_null_audit.py

Targeted null/surrogate audit for BOUNDARY prescan blank rows.

The global boundary shuffle audit is a historical deposit. This tool does not
rewrite it; it creates an extra row-aligned null audit for selected blank
domains so the denominator prescan can decide whether blank -> transfers,
blank -> falls, or blank remains blank.
"""

from __future__ import annotations

import argparse
import json
import math
from datetime import datetime, timezone
from pathlib import Path
from typing import Any

import numpy as np

from dnd_autoricerca import _genera_variante, genera_segnale


R_GUE = 0.5307
R_POISSON = 2 * math.log(2) - 1
DEFAULT_DOMAINS = ("zeta_zeros", "pendolo_doppio")


def finite_number(value: Any) -> bool:
    return isinstance(value, (int, float)) and math.isfinite(float(value))


def normalized_spacings(signal: np.ndarray, metadata: dict[str, Any]) -> np.ndarray:
    values = np.asarray(signal, dtype=float)
    values = values[np.isfinite(values)]
    if metadata.get("is_spacings"):
        spacings = values[values > 0]
    else:
        spacings = np.diff(np.sort(values))
        spacings = spacings[spacings > 0]
    if len(spacings) == 0:
        return spacings
    mu = float(np.mean(spacings))
    return spacings / mu if mu > 0 else np.array([])


def r_statistic(spacings: np.ndarray) -> float:
    if len(spacings) < 2:
        return float("nan")
    left = spacings[:-1]
    right = spacings[1:]
    denom = np.maximum(left, right)
    valid = denom > 0
    if not np.any(valid):
        return float("nan")
    ratios = np.minimum(left[valid], right[valid]) / denom[valid]
    return float(np.mean(ratios))


def classify_r(value: float) -> str:
    if not finite_number(value):
        return "absent"
    return "GUE" if abs(value - R_GUE) < abs(value - R_POISSON) else "Poisson"


def generate_domain_signal(domain: str) -> tuple[np.ndarray, dict[str, Any]]:
    if "_var_" not in domain:
        return genera_segnale(domain)

    base, raw_value = domain.rsplit("_var_", 1)
    try:
        value: Any = float(raw_value)
    except ValueError:
        value = raw_value

    if base == "logistica_biforcazione":
        signal, metadata = _genera_variante(base, {"r_override": value})
    elif base == "zeta_zeros":
        signal, metadata = _genera_variante(base, {"n_zeros": int(value)})
    elif base == "numeri_primi":
        signal, metadata = _genera_variante(base, {"max_n": int(value)})
    elif base == "cellular_automata":
        signal, metadata = _genera_variante(base, {"rule_number": int(value)})
    else:
        signal, metadata = _genera_variante(base, {"param": value})

    metadata = {**metadata, "dominio": domain, "variant_base": base, "variant_value": value}
    return signal, metadata


def audit_domain(domain: str, n_shuffle: int, rng: np.random.Generator) -> dict[str, Any]:
    signal, metadata = generate_domain_signal(domain)
    spacings = normalized_spacings(signal, metadata)
    r_original = r_statistic(spacings)

    shuffled = []
    for _ in range(n_shuffle):
        shuffled.append(r_statistic(rng.permutation(spacings)))
    shuffled_arr = np.asarray(shuffled, dtype=float)
    shuffled_arr = shuffled_arr[np.isfinite(shuffled_arr)]

    if len(shuffled_arr) == 0 or not finite_number(r_original):
        return {
            "domain": domain,
            "error": "insufficient finite spacing/null values",
            "n_gaps": int(len(spacings)),
        }

    mean = float(np.mean(shuffled_arr))
    std = float(np.std(shuffled_arr))
    z_score = 0.0 if std <= 1e-12 else float((r_original - mean) / std)
    class_original = classify_r(r_original)
    class_shuffled = classify_r(mean)

    return {
        "domain": domain,
        "r_original": round(float(r_original), 6),
        "r_shuffled_mean": round(mean, 6),
        "r_shuffled_std": round(std, 6),
        "z_score": round(z_score, 6),
        "n_shuffle": int(n_shuffle),
        "n_gaps": int(len(spacings)),
        "class_original": class_original,
        "class_shuffled": class_shuffled,
        "class_changes": class_original != class_shuffled,
        "ordering_dependent": abs(z_score) > 3.0,
        "source": {
            "generator": "dnd_autoricerca.genera_segnale",
            "metadata": metadata,
            "null": "marginal-preserving spacing permutation",
        },
    }


def run(args: argparse.Namespace) -> dict[str, Any]:
    rng = np.random.default_rng(args.seed)
    domains = args.domains or list(DEFAULT_DOMAINS)
    results = {
        domain: audit_domain(domain, args.n_shuffle, rng)
        for domain in domains
    }
    output = {
        "experiment": "boundary_blank_null_audit",
        "generated_at": datetime.now(timezone.utc).isoformat(),
        "seed": args.seed,
        "n_shuffle": args.n_shuffle,
        "reference": {
            "R_GUE": R_GUE,
            "R_Poisson": R_POISSON,
        },
        "domains": results,
        "summary": {
            "domains": domains,
            "ready": [
                domain for domain, row in results.items()
                if "error" not in row and finite_number(row.get("z_score"))
            ],
            "errors": [
                domain for domain, row in results.items()
                if "error" in row
            ],
        },
    }

    out = Path(args.out)
    out.parent.mkdir(parents=True, exist_ok=True)
    out.write_text(json.dumps(output, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")

    print(f"wrote={out}")
    for domain, row in results.items():
        if "error" in row:
            print(f"{domain}\tERROR\t{row['error']}")
            continue
        print(
            f"{domain}\tn={row['n_gaps']}\tr={row['r_original']:.6f}\t"
            f"shuffle={row['r_shuffled_mean']:.6f}\tz={row['z_score']:.2f}\t"
            f"{row['class_original']}->{row['class_shuffled']}"

exec
/bin/bash -lc 'rg -n "def genera_segnale|def row_spacings|genera_segnale" tools/*.py' in /opt/MM_D-ND
 succeeded in 0ms:
tools/dnd_autoricerca.py:90:def genera_segnale(dominio):
tools/dnd_autoricerca.py:943:            signal, metadata = genera_segnale(dominio_base)
tools/dnd_autoricerca.py:2412:        return genera_segnale(dominio_base)
tools/dnd_experiments.py:1018:    from dnd_autoricerca import genera_segnale
tools/dnd_experiments.py:1027:            signal, meta = genera_segnale(dom)
tools/exp_semireal_boundary_transfer_gate.py:40:def row_spacings(domain: str) -> np.ndarray:
tools/exp_spectral_rigidity.py:28:from dnd_autoricerca import genera_segnale
tools/exp_spectral_rigidity.py:33:    signal, meta = genera_segnale(dominio)
tools/exp_boundary_blank_null_audit.py:24:from dnd_autoricerca import _genera_variante, genera_segnale
tools/exp_boundary_blank_null_audit.py:71:        return genera_segnale(domain)
tools/exp_boundary_blank_null_audit.py:131:            "generator": "dnd_autoricerca.genera_segnale",
tools/exp_markov_memory_by_gue_type.py:31:from dnd_autoricerca import genera_segnale
tools/exp_markov_memory_by_gue_type.py:151:        signal, meta = genera_segnale(dom_name)
tools/exp_markov_memory_by_gue_type.py:164:        signal, meta = genera_segnale('string_vibration')
tools/exp_markov_memory_by_gue_type.py:182:            signal, meta = genera_segnale(dom_name)
tools/exp_boundary_residual_beta_absent_audit.py:76:            "generator": "dnd_autoricerca.genera_segnale -> prime gap spacings",

exec
/bin/bash -lc "sed -n '1,170p' tools/exp_semireal_boundary_transfer_gate.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
exp_semireal_boundary_transfer_gate.py

Move the BOUNDARY transfer matrix from controlled synthetic perimeters to the
13 semi-real rows of the base BOUNDARY perimeter.

The coherent endpoint is the domain-native spacing order reconstructed from
dnd_autoricerca. The illusory endpoint is a marginal-preserving permutation.
Intermediate beta layers replace a beta fraction of the coherent row with the
permuted row, preserving the row denominator while destroying order locally.
"""

from __future__ import annotations

import argparse
import json
from pathlib import Path
from typing import Any

import numpy as np

from exp_boundary_blank_null_audit import generate_domain_signal, normalized_spacings
from exp_semireal_order_denominator_gate import analyze_sequence, compact
from observables_registry import OBSERVABLES_CANONICAL, OBSERVABLES_REGISTRY_VERSION


OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())


def load_scope(path: Path) -> list[dict[str, Any]]:
    with path.open() as f:
        data = json.load(f)
    rows = data.get("rows", [])
    if not isinstance(rows, list):
        raise ValueError(f"{path} does not contain a list under rows")
    return rows


def row_spacings(domain: str) -> np.ndarray:
    signal, metadata = generate_domain_signal(domain)
    if domain == "numeri_primi":
        metadata = {**metadata, "is_spacings": True}
    spacings = normalized_spacings(signal, metadata)
    spacings = np.asarray(spacings, dtype=float)
    spacings = spacings[np.isfinite(spacings) & (spacings > 0)]
    if len(spacings) == 0:
        return spacings
    mean = float(np.mean(spacings))
    return spacings / mean if mean > 1e-15 else spacings


def evaluate_matrix(matrix: dict[str, dict[str, Any]], args: argparse.Namespace) -> dict[str, Any]:
    rows = {}
    counts = {
        "transfer_with_blank": 0,
        "transfer_no_blank": 0,
        "fall": 0,
        "errors": 0,
    }
    for name, row in matrix.items():
        if row.get("error"):
            state = "error"
            counts["errors"] += 1
        else:
            one_sided_count = len(row["coherent_one_sided_observables"])
            illusory_residue = float(row["stable_count_illusory"])
            endpoint_distance = float(row["endpoint_distance_one_sided_gated"])
            ambiguous_beta = row["ambiguous_beta_one_sided_gated"]
            has_transfer = (
                one_sided_count >= args.min_one_sided
                and illusory_residue <= args.illusory_residue_max
                and endpoint_distance >= args.endpoint_distance_min
            )
            if not has_transfer:
                state = "fall"
                counts["fall"] += 1
            elif ambiguous_beta:
                state = "transfer_with_blank"
                counts["transfer_with_blank"] += 1
            else:
                state = "transfer_no_blank"
                counts["transfer_no_blank"] += 1
        rows[name] = {"state": state}
        rows[name].update(row)
    return {"counts": counts, "rows": rows}


def run(args: argparse.Namespace) -> dict[str, Any]:
    scope_rows = load_scope(Path(args.scope))
    rng = np.random.default_rng(args.seed)
    perimeters = {}
    build_errors = {}

    for source in scope_rows:
        domain = source["domain"]
        name = source["domain_window"]
        try:
            spacings = row_spacings(domain)
            source_meta = {
                "denominator_state": source.get("denominator_state"),
                "source_transfer": source.get("transfer"),
                "source_excluded_mass": source.get("excluded_mass"),
            }
            if args.include_source_labels:
                source_meta["source_domain_type"] = source.get("source_domain_type")

            if len(spacings) < args.min_gaps:
                build_errors[name] = {
                    "error": f"insufficient gaps: {len(spacings)} < {args.min_gaps}",
                    "n_gaps": int(len(spacings)),
                    "denominator_state": source.get("denominator_state"),
                }
                if args.include_source_labels:
                    build_errors[name]["source_domain_type"] = source.get("source_domain_type")
                continue
            base = spacings[: args.n_gaps] if len(spacings) > args.n_gaps else spacings
            perimeters[name] = analyze_sequence(name, base, args, rng)
            perimeters[name]["source"].update({"domain": domain, **source_meta})
        except Exception as exc:  # noqa: BLE001 - report row-level telemetry.
            build_errors[name] = {
                "error": type(exc).__name__,
                "message": str(exc),
                "denominator_state": source.get("denominator_state"),
            }
            if args.include_source_labels:
                build_errors[name]["source_domain_type"] = source.get("source_domain_type")

    matrix = compact(perimeters)
    for name, err in build_errors.items():
        matrix[name] = err

    evaluation = evaluate_matrix(matrix, args)
    output = {
        "experiment": "semireal_boundary_transfer_gate",
        "question": "Does the BOUNDARY coherent/null/beta gate transfer from synthetic perimeters to the 13 semi-real base rows?",
        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
        "observables_used": OBS_NAMES,
        "params": vars(args),
        "source_scope": args.scope,
        "source_summary": {
            "rows": len(scope_rows),
            "label_policy": (
                "source_domain_type included as audit metadata only"
                if args.include_source_labels
                else "source_domain_type omitted; states are label-independent"
            ),
        },
        "matrix": matrix,
        "evaluation": evaluation,
        "perimeters": perimeters,
    }

    out_path = Path(args.out)
    out_path.parent.mkdir(parents=True, exist_ok=True)
    with out_path.open("w") as f:
        json.dump(output, f, indent=2)

    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
    print(f"observables_used={OBS_NAMES}")
    print(f"source_rows={len(scope_rows)} analyzed={len(perimeters)} errors={len(build_errors)}")
    print("state counts:", output["evaluation"]["counts"])
    print("row state n one_sided stable0 stable1 dist ambiguous")
    for name, row in sorted(output["evaluation"]["rows"].items()):
        if row.get("error"):
            print(f"{name:45s} {row['state']:>20s} {row.get('n_gaps', 0):>5d} ERROR")
            continue
        print(
            f"{name:45s} {row['state']:>20s} "
            f"{row['n_gaps']:>5d} "

codex
Creo uno strumento riusabile, non un report-only script: legge il perimetro base a 13 righe, ricostruisce gli spacing row-aligned, misura osservabili canonici più rigidità spettrale esplicita, poi costruisce un grafo kNN in spazio osservabile per vedere se il confine compare come nodo/ponte e non solo come etichetta GUE/Poisson.
apply patch
patch: completed
/opt/MM_D-ND/tools/exp_boundary_graph_curvature_gate.py
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

codex
Lo script è pronto. Ora lo eseguo con denominatori moderati per restare dentro il cycle: 2048 gap massimo per riga, 64 shuffle per z osservabile, k=3 per il grafo locale.
exec
/bin/bash -lc 'python tools/exp_boundary_graph_curvature_gate.py --out tools/data/boundary_graph_curvature_gate_20260515_1855.json' in /opt/MM_D-ND
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

codex
L’esecuzione è ancora in corso, verosimilmente nella rigenerazione di alcune righe semi-reali e negli shuffle. Se resta troppo lenta riduco il perimetro numerico senza cambiare l’operatore, perché qui serve il segnale strutturale del grafo, non una stima ad alta precisione.
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

 succeeded in 64397ms:
observables_registry=1.0.0-2026-05-06
observables_used=['SR', 'SR2', 'L1', 'L2', 'triple_var', 'SR_local_rigidity', 'z_SR', 'z_SR2', 'z_L1', 'z_L2', 'z_triple_var']
rows_analyzed=13 errors=0
label_counts={'GUE': 8, 'Poisson': 5}
edge_counts={'total': 27, 'cross_label': 8, 'same_label': 19}
curvature={'cross_edge_mean': -4.625, 'same_edge_mean': -4.789474}
third_included_candidates=['numeri_primi:cycle_3', 'percolation:cycle_9', 'reaction_diffusion:cycle_11', 'logistica_biforcazione_var_3.5699:cycle_13']
ising_2d:cycle_1	GUE	margin=0.335	cross=0.000	state=class_interior
pendolo_doppio:cycle_2	Poisson	margin=0.299	cross=0.333	state=cut_edge
numeri_primi:cycle_3	GUE	margin=0.223	cross=0.250	state=third_included_candidate
zeta_zeros:cycle_4	GUE	margin=0.308	cross=0.333	state=cut_edge
logistica_biforcazione:cycle_5	GUE	margin=0.163	cross=0.000	state=class_interior
string_vibration:cycle_6	Poisson	margin=0.551	cross=0.500	state=cut_edge
random_matrix:cycle_7	GUE	margin=0.352	cross=0.167	state=cut_edge
cellular_automata:cycle_8	GUE	margin=0.412	cross=0.000	state=class_interior
percolation:cycle_9	Poisson	margin=0.089	cross=1.000	state=third_included_candidate
coupled_oscillators:cycle_10	Poisson	margin=0.561	cross=0.000	state=class_interior
reaction_diffusion:cycle_11	GUE	margin=0.115	cross=0.750	state=third_included_candidate
brownian_motion:cycle_12	Poisson	margin=0.438	cross=0.250	state=cut_edge
logistica_biforcazione_var_3.5699:cycle_13	GUE	margin=0.217	cross=0.250	state=third_included_candidate
saved=tools/data/boundary_graph_curvature_gate_20260515_1855.json

codex
Il risultato non e' una separazione pulita: il grafo ha 8 edge cross-label su 27 e quattro righe a margine basso con vicini dell'altro polo. Sto scrivendo il report come CONSTRAINT: il boundary esiste nel perimetro, ma come sottoinsieme di righe ponte, non come tutta la fascia GUE/Poisson.
apply patch
patch: completed
/opt/MM_D-ND/tools/data/reports/agent_20260515_1855.md
diff --git a/tools/data/reports/agent_20260515_1855.md b/tools/data/reports/agent_20260515_1855.md
new file mode 100644
index 0000000000000000000000000000000000000000..dbd0843221fbc2a8df877a64691c87e3aa802a79
--- /dev/null
+++ b/tools/data/reports/agent_20260515_1855.md
@@ -0,0 +1,89 @@
+# Agent Report - Boundary Graph Curvature Gate
+**Date**: 2026-05-15 18:55
+**Piano**: 120
+**Tension explored**: BOUNDARY (0.8)
+observables_registry: 1.0.0-2026-05-06
+observables_used: [SR, SR2, L1, L2, triple_var, SR_local_rigidity, z_SR, z_SR2, z_L1, z_L2, z_triple_var]
+**observable_contract**: claim=il confine GUE/Poisson e' operativo quando la geometria row-aligned produce nodi cross-label a margine basso; observable=kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature; operator=grafo kNN nello spazio canonical+rigidity+shuffle-z; generator=dnd_autoricerca row_spacings via semireal boundary transfer gate; denominator=13 righe base BOUNDARY, 8 GUE e 5 Poisson; non_possible=terzo incluso se non compaiono edge cross-label o se tutti gli edge cross-label restano interni ad alta margin; not_tested=V_c, denominatori Sturmian, origine analitica delle label.
+
+## Respiro fuori-tempo
+- **Combo**: A9 terzo incluso + incrocio QxG continuo/discreto + grafo della conoscenza come nodo/cut + tensione BOUNDARY "8 domini GUE, 5 Poisson".
+- **Dipolo / punto-zero**: repulsione spettrale / indipendenza spettrale. Punto-zero: riga di dominio che non decide per label ma connette i due poli nel grafo osservabile.
+- **Piano superiore**: grafo della conoscenza con curvatura su edge; il boundary e' un nodo/ponte prima di essere classe.
+- **Operatori laterali scelti**: graph spectrum/curvature, spectral rigidity, GUE/Poisson. La rigidita' entra come osservabile esplicita, GUE/Poisson solo come audit label.
+- **Contaminazione cognitiva**: CE-none: il campo letto non contiene un archivio enzimi cognitivi attivo; il layer cognitivo resta spento per non aggiungere semantica.
+- **Proto-ipotesi**: il boundary non coincide con una beta locale o con una label. Esiste come riga a bassa distanza dai centroidi e con vicini dell'altro polo.
+- **Proiezione**: se il terzo incluso e' operativo, il grafo kNN delle 13 righe deve produrre edge GUE/Poisson e almeno una riga a margine basso; se il boundary e' solo tassonomia, il grafo resta in due componenti o attraversa solo con margin alta.
+
+## Aderenza alla direzione
+- `relation`: `follows_direction`
+- `why`: il ciclo misura esplicitamente il perimetro vivo 8 GUE / 5 Poisson e chiede dove il confine funziona come terzo incluso operativo.
+- `not_drift`: non usa il report Sturmian bloccato, non misura V_c, non usa phi/silver/bronze come sorgente; le label GUE/Poisson sono audit metadata, non operatore decisionale.
+
+## Claim Under Test
+> Nel perimetro base BOUNDARY, il terzo incluso appare come sottoinsieme di righe cross-label a margine basso nel grafo degli osservabili, non come l'intera divisione GUE/Poisson.
+
+## Question
+Il confine 8 GUE / 5 Poisson resta una separazione binaria o produce nodi ponte misurabili nel grafo osservabile?
+
+## Ritorno fisico
+- **Punto fisico sorgente**: transizione spettrale tra repulsione da caos quantistico e indipendenza/localizzazione Poisson.
+- **Attraversamento matematico**: grafo kNN row-aligned con osservabili canonici, rigidita' spettrale e z contro shuffle.
+- **Punto fisico di ritorno**: audit di spettri finiti in sistemi mesoscopici o fotonici disordinati vicino a mobility edge/localization crossover.
+- **Relazione nuova**: il test non chiede solo il valore medio della statistica di spacing; chiede quali campioni diventano righe ponte tra regime repulsivo e regime indipendente.
+- **Osservabile/test fisico possibile**: su finestre energetiche sperimentali, costruire lo stesso grafo con spacing ratio, rigidita' locale e shuffle-z; boundary se compaiono nodi cross-regime a margine basso.
+- **Se fallisce**: ritorno_fisico_assente se l'effetto sparisce con piu' campioni, con unfolding alternativo o con labels sperimentali indipendenti.
+
+## Experiment Design
+- **Metrica**: SR, SR2, L1, L2, triple_var, SR_local_rigidity, z-score original-vs-shuffle per gli osservabili canonici.
+- **Scope**: `boundary_denominator_prescan_full_20260509_1500.json`, righe base BOUNDARY con `source_domain_type in {GUE, Poisson}`.
+- **Null baseline**: 64 shuffle per riga, preservando marginale degli spacing e rompendo l'ordine.
+- **N campioni**: 13 righe analizzate; 2048 gap massimo per riga; 0 errori.
+- **Grafo**: kNN con k=3 nello spazio standardizzato degli 11 feature.
+- **Contratto osservabile-operatore**: il claim usa posizione nel grafo, frazione di vicini cross-label, margin ai centroidi GUE/Poisson e curvatura Forman non pesata. `gap_ratio`, `V_c` e denominatori Sturmian non sono testati.
+
+## Results
+| observable | value |
+|---|---:|
+| rows analyzed | 13 |
+| GUE / Poisson rows | 8 / 5 |
+| graph edges total | 27 |
+| cross-label edges | 8 |
+| same-label edges | 19 |
+| cross edge curvature mean | -4.625 |
+| same edge curvature mean | -4.789474 |
+| third-included candidates | 4 |
+
+| row | label | margin | cross-neighbor fraction | state |
+|---|---:|---:|---:|---|
+| numeri_primi:cycle_3 | GUE | 0.223 | 0.250 | third_included_candidate |
+| percolation:cycle_9 | Poisson | 0.089 | 1.000 | third_included_candidate |
+| reaction_diffusion:cycle_11 | GUE | 0.115 | 0.750 | third_included_candidate |
+| logistica_biforcazione_var_3.5699:cycle_13 | GUE | 0.217 | 0.250 | third_included_candidate |
+| pendolo_doppio:cycle_2 | Poisson | 0.299 | 0.333 | cut_edge |
+| zeta_zeros:cycle_4 | GUE | 0.308 | 0.333 | cut_edge |
+| string_vibration:cycle_6 | Poisson | 0.551 | 0.500 | cut_edge |
+| random_matrix:cycle_7 | GUE | 0.352 | 0.167 | cut_edge |
+| brownian_motion:cycle_12 | Poisson | 0.438 | 0.250 | cut_edge |
+
+## Key Findings
+1. Verificato: il perimetro e' quello richiesto, 13 righe con 8 GUE e 5 Poisson, senza errori di ricostruzione.
+2. Verificato: la separazione non e' binaria nel grafo osservabile; 8/27 edge attraversano la label GUE/Poisson.
+3. Verificato: quattro righe hanno insieme margin bassa e vicini cross-label: `numeri_primi:cycle_3`, `percolation:cycle_9`, `reaction_diffusion:cycle_11`, `logistica_biforcazione_var_3.5699:cycle_13`.
+4. Verificato: la curvatura media degli edge cross-label (-4.625) non si separa nettamente dagli edge same-label (-4.789474). La curvatura Forman non basta da sola; il contenuto vive nella combinazione margin + vicinato.
+
+## Verdict
+CONSTRAINT
+
+Il boundary trasferisce come geometria di righe ponte nel perimetro 8/5. Non trasferisce come singolo scalare di curvatura e non autorizza una tassonomia pulita GUE vs Poisson.
+
+## Bicono della scoperta
+- **Due radici**: label spettrale GUE/Poisson; posizione geometrica nel grafo osservabile.
+- **Singolare**: la riga di dominio prima della classificazione, con ordine, rigidita' e null gia' presenti.
+- **Invariante di passaggio**: il nodo a bassa margin con almeno un legame cross-label.
+- **Campo di possibilita**: qui diventa possibile cercare il boundary come nodo ponte in spettri fisici finiti; qui diventa non-possibile usare la curvatura media o la label sola come terzo incluso.
+
+## Files
+- Script: `tools/exp_boundary_graph_curvature_gate.py`
+- Data: `tools/data/boundary_graph_curvature_gate_20260515_1855.json`
+- Report: `tools/data/reports/agent_20260515_1855.md`
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

diff --git a/tools/data/reports/agent_20260515_1855.md b/tools/data/reports/agent_20260515_1855.md
new file mode 100644
index 0000000000000000000000000000000000000000..dbd0843221fbc2a8df877a64691c87e3aa802a79
--- /dev/null
+++ b/tools/data/reports/agent_20260515_1855.md
@@ -0,0 +1,89 @@
+# Agent Report - Boundary Graph Curvature Gate
+**Date**: 2026-05-15 18:55
+**Piano**: 120
+**Tension explored**: BOUNDARY (0.8)
+observables_registry: 1.0.0-2026-05-06
+observables_used: [SR, SR2, L1, L2, triple_var, SR_local_rigidity, z_SR, z_SR2, z_L1, z_L2, z_triple_var]
+**observable_contract**: claim=il confine GUE/Poisson e' operativo quando la geometria row-aligned produce nodi cross-label a margine basso; observable=kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature; operator=grafo kNN nello spazio canonical+rigidity+shuffle-z; generator=dnd_autoricerca row_spacings via semireal boundary transfer gate; denominator=13 righe base BOUNDARY, 8 GUE e 5 Poisson; non_possible=terzo incluso se non compaiono edge cross-label o se tutti gli edge cross-label restano interni ad alta margin; not_tested=V_c, denominatori Sturmian, origine analitica delle label.
+
+## Respiro fuori-tempo
+- **Combo**: A9 terzo incluso + incrocio QxG continuo/discreto + grafo della conoscenza come nodo/cut + tensione BOUNDARY "8 domini GUE, 5 Poisson".
+- **Dipolo / punto-zero**: repulsione spettrale / indipendenza spettrale. Punto-zero: riga di dominio che non decide per label ma connette i due poli nel grafo osservabile.
+- **Piano superiore**: grafo della conoscenza con curvatura su edge; il boundary e' un nodo/ponte prima di essere classe.
+- **Operatori laterali scelti**: graph spectrum/curvature, spectral rigidity, GUE/Poisson. La rigidita' entra come osservabile esplicita, GUE/Poisson solo come audit label.
+- **Contaminazione cognitiva**: CE-none: il campo letto non contiene un archivio enzimi cognitivi attivo; il layer cognitivo resta spento per non aggiungere semantica.
+- **Proto-ipotesi**: il boundary non coincide con una beta locale o con una label. Esiste come riga a bassa distanza dai centroidi e con vicini dell'altro polo.
+- **Proiezione**: se il terzo incluso e' operativo, il grafo kNN delle 13 righe deve produrre edge GUE/Poisson e almeno una riga a margine basso; se il boundary e' solo tassonomia, il grafo resta in due componenti o attraversa solo con margin alta.
+
+## Aderenza alla direzione
+- `relation`: `follows_direction`
+- `why`: il ciclo misura esplicitamente il perimetro vivo 8 GUE / 5 Poisson e chiede dove il confine funziona come terzo incluso operativo.
+- `not_drift`: non usa il report Sturmian bloccato, non misura V_c, non usa phi/silver/bronze come sorgente; le label GUE/Poisson sono audit metadata, non operatore decisionale.
+
+## Claim Under Test
+> Nel perimetro base BOUNDARY, il terzo incluso appare come sottoinsieme di righe cross-label a margine basso nel grafo degli osservabili, non come l'intera divisione GUE/Poisson.
+
+## Question
+Il confine 8 GUE / 5 Poisson resta una separazione binaria o produce nodi ponte misurabili nel grafo osservabile?
+
+## Ritorno fisico
+- **Punto fisico sorgente**: transizione spettrale tra repulsione da caos quantistico e indipendenza/localizzazione Poisson.
+- **Attraversamento matematico**: grafo kNN row-aligned con osservabili canonici, rigidita' spettrale e z contro shuffle.
+- **Punto fisico di ritorno**: audit di spettri finiti in sistemi mesoscopici o fotonici disordinati vicino a mobility edge/localization crossover.
+- **Relazione nuova**: il test non chiede solo il valore medio della statistica di spacing; chiede quali campioni diventano righe ponte tra regime repulsivo e regime indipendente.
+- **Osservabile/test fisico possibile**: su finestre energetiche sperimentali, costruire lo stesso grafo con spacing ratio, rigidita' locale e shuffle-z; boundary se compaiono nodi cross-regime a margine basso.
+- **Se fallisce**: ritorno_fisico_assente se l'effetto sparisce con piu' campioni, con unfolding alternativo o con labels sperimentali indipendenti.
+
+## Experiment Design
+- **Metrica**: SR, SR2, L1, L2, triple_var, SR_local_rigidity, z-score original-vs-shuffle per gli osservabili canonici.
+- **Scope**: `boundary_denominator_prescan_full_20260509_1500.json`, righe base BOUNDARY con `source_domain_type in {GUE, Poisson}`.
+- **Null baseline**: 64 shuffle per riga, preservando marginale degli spacing e rompendo l'ordine.
+- **N campioni**: 13 righe analizzate; 2048 gap massimo per riga; 0 errori.
+- **Grafo**: kNN con k=3 nello spazio standardizzato degli 11 feature.
+- **Contratto osservabile-operatore**: il claim usa posizione nel grafo, frazione di vicini cross-label, margin ai centroidi GUE/Poisson e curvatura Forman non pesata. `gap_ratio`, `V_c` e denominatori Sturmian non sono testati.
+
+## Results
+| observable | value |
+|---|---:|
+| rows analyzed | 13 |
+| GUE / Poisson rows | 8 / 5 |
+| graph edges total | 27 |
+| cross-label edges | 8 |
+| same-label edges | 19 |
+| cross edge curvature mean | -4.625 |
+| same edge curvature mean | -4.789474 |
+| third-included candidates | 4 |
+
+| row | label | margin | cross-neighbor fraction | state |
+|---|---:|---:|---:|---|
+| numeri_primi:cycle_3 | GUE | 0.223 | 0.250 | third_included_candidate |
+| percolation:cycle_9 | Poisson | 0.089 | 1.000 | third_included_candidate |
+| reaction_diffusion:cycle_11 | GUE | 0.115 | 0.750 | third_included_candidate |
+| logistica_biforcazione_var_3.5699:cycle_13 | GUE | 0.217 | 0.250 | third_included_candidate |
+| pendolo_doppio:cycle_2 | Poisson | 0.299 | 0.333 | cut_edge |
+| zeta_zeros:cycle_4 | GUE | 0.308 | 0.333 | cut_edge |
+| string_vibration:cycle_6 | Poisson | 0.551 | 0.500 | cut_edge |
+| random_matrix:cycle_7 | GUE | 0.352 | 0.167 | cut_edge |
+| brownian_motion:cycle_12 | Poisson | 0.438 | 0.250 | cut_edge |
+
+## Key Findings
+1. Verificato: il perimetro e' quello richiesto, 13 righe con 8 GUE e 5 Poisson, senza errori di ricostruzione.
+2. Verificato: la separazione non e' binaria nel grafo osservabile; 8/27 edge attraversano la label GUE/Poisson.
+3. Verificato: quattro righe hanno insieme margin bassa e vicini cross-label: `numeri_primi:cycle_3`, `percolation:cycle_9`, `reaction_diffusion:cycle_11`, `logistica_biforcazione_var_3.5699:cycle_13`.
+4. Verificato: la curvatura media degli edge cross-label (-4.625) non si separa nettamente dagli edge same-label (-4.789474). La curvatura Forman non basta da sola; il contenuto vive nella combinazione margin + vicinato.
+
+## Verdict
+CONSTRAINT
+
+Il boundary trasferisce come geometria di righe ponte nel perimetro 8/5. Non trasferisce come singolo scalare di curvatura e non autorizza una tassonomia pulita GUE vs Poisson.
+
+## Bicono della scoperta
+- **Due radici**: label spettrale GUE/Poisson; posizione geometrica nel grafo osservabile.
+- **Singolare**: la riga di dominio prima della classificazione, con ordine, rigidita' e null gia' presenti.
+- **Invariante di passaggio**: il nodo a bassa margin con almeno un legame cross-label.
+- **Campo di possibilita**: qui diventa possibile cercare il boundary come nodo ponte in spettri fisici finiti; qui diventa non-possibile usare la curvatura media o la label sola come terzo incluso.
+
+## Files
+- Script: `tools/exp_boundary_graph_curvature_gate.py`
+- Data: `tools/data/boundary_graph_curvature_gate_20260515_1855.json`
+- Report: `tools/data/reports/agent_20260515_1855.md`
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

codex
Faccio una verifica leggera sui file prodotti: controllo che il JSON sia leggibile e che il report punti agli artefatti corretti. Non lancio post-processing distruttivi o aggiornamenti al seme senza necessita'.
exec
/bin/bash -lc "sed -n '1,260p' tools/data/reports/agent_20260515_1855.md" in /opt/MM_D-ND
 succeeded in 0ms:
# Agent Report - Boundary Graph Curvature Gate
**Date**: 2026-05-15 18:55
**Piano**: 120
**Tension explored**: BOUNDARY (0.8)
observables_registry: 1.0.0-2026-05-06
observables_used: [SR, SR2, L1, L2, triple_var, SR_local_rigidity, z_SR, z_SR2, z_L1, z_L2, z_triple_var]
**observable_contract**: claim=il confine GUE/Poisson e' operativo quando la geometria row-aligned produce nodi cross-label a margine basso; observable=kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature; operator=grafo kNN nello spazio canonical+rigidity+shuffle-z; generator=dnd_autoricerca row_spacings via semireal boundary transfer gate; denominator=13 righe base BOUNDARY, 8 GUE e 5 Poisson; non_possible=terzo incluso se non compaiono edge cross-label o se tutti gli edge cross-label restano interni ad alta margin; not_tested=V_c, denominatori Sturmian, origine analitica delle label.

## Respiro fuori-tempo
- **Combo**: A9 terzo incluso + incrocio QxG continuo/discreto + grafo della conoscenza come nodo/cut + tensione BOUNDARY "8 domini GUE, 5 Poisson".
- **Dipolo / punto-zero**: repulsione spettrale / indipendenza spettrale. Punto-zero: riga di dominio che non decide per label ma connette i due poli nel grafo osservabile.
- **Piano superiore**: grafo della conoscenza con curvatura su edge; il boundary e' un nodo/ponte prima di essere classe.
- **Operatori laterali scelti**: graph spectrum/curvature, spectral rigidity, GUE/Poisson. La rigidita' entra come osservabile esplicita, GUE/Poisson solo come audit label.
- **Contaminazione cognitiva**: CE-none: il campo letto non contiene un archivio enzimi cognitivi attivo; il layer cognitivo resta spento per non aggiungere semantica.
- **Proto-ipotesi**: il boundary non coincide con una beta locale o con una label. Esiste come riga a bassa distanza dai centroidi e con vicini dell'altro polo.
- **Proiezione**: se il terzo incluso e' operativo, il grafo kNN delle 13 righe deve produrre edge GUE/Poisson e almeno una riga a margine basso; se il boundary e' solo tassonomia, il grafo resta in due componenti o attraversa solo con margin alta.

## Aderenza alla direzione
- `relation`: `follows_direction`
- `why`: il ciclo misura esplicitamente il perimetro vivo 8 GUE / 5 Poisson e chiede dove il confine funziona come terzo incluso operativo.
- `not_drift`: non usa il report Sturmian bloccato, non misura V_c, non usa phi/silver/bronze come sorgente; le label GUE/Poisson sono audit metadata, non operatore decisionale.

## Claim Under Test
> Nel perimetro base BOUNDARY, il terzo incluso appare come sottoinsieme di righe cross-label a margine basso nel grafo degli osservabili, non come l'intera divisione GUE/Poisson.

## Question
Il confine 8 GUE / 5 Poisson resta una separazione binaria o produce nodi ponte misurabili nel grafo osservabile?

## Ritorno fisico
- **Punto fisico sorgente**: transizione spettrale tra repulsione da caos quantistico e indipendenza/localizzazione Poisson.
- **Attraversamento matematico**: grafo kNN row-aligned con osservabili canonici, rigidita' spettrale e z contro shuffle.
- **Punto fisico di ritorno**: audit di spettri finiti in sistemi mesoscopici o fotonici disordinati vicino a mobility edge/localization crossover.
- **Relazione nuova**: il test non chiede solo il valore medio della statistica di spacing; chiede quali campioni diventano righe ponte tra regime repulsivo e regime indipendente.
- **Osservabile/test fisico possibile**: su finestre energetiche sperimentali, costruire lo stesso grafo con spacing ratio, rigidita' locale e shuffle-z; boundary se compaiono nodi cross-regime a margine basso.
- **Se fallisce**: ritorno_fisico_assente se l'effetto sparisce con piu' campioni, con unfolding alternativo o con labels sperimentali indipendenti.

## Experiment Design
- **Metrica**: SR, SR2, L1, L2, triple_var, SR_local_rigidity, z-score original-vs-shuffle per gli osservabili canonici.
- **Scope**: `boundary_denominator_prescan_full_20260509_1500.json`, righe base BOUNDARY con `source_domain_type in {GUE, Poisson}`.
- **Null baseline**: 64 shuffle per riga, preservando marginale degli spacing e rompendo l'ordine.
- **N campioni**: 13 righe analizzate; 2048 gap massimo per riga; 0 errori.
- **Grafo**: kNN con k=3 nello spazio standardizzato degli 11 feature.
- **Contratto osservabile-operatore**: il claim usa posizione nel grafo, frazione di vicini cross-label, margin ai centroidi GUE/Poisson e curvatura Forman non pesata. `gap_ratio`, `V_c` e denominatori Sturmian non sono testati.

## Results
| observable | value |
|---|---:|
| rows analyzed | 13 |
| GUE / Poisson rows | 8 / 5 |
| graph edges total | 27 |
| cross-label edges | 8 |
| same-label edges | 19 |
| cross edge curvature mean | -4.625 |
| same edge curvature mean | -4.789474 |
| third-included candidates | 4 |

| row | label | margin | cross-neighbor fraction | state |
|---|---:|---:|---:|---|
| numeri_primi:cycle_3 | GUE | 0.223 | 0.250 | third_included_candidate |
| percolation:cycle_9 | Poisson | 0.089 | 1.000 | third_included_candidate |
| reaction_diffusion:cycle_11 | GUE | 0.115 | 0.750 | third_included_candidate |
| logistica_biforcazione_var_3.5699:cycle_13 | GUE | 0.217 | 0.250 | third_included_candidate |
| pendolo_doppio:cycle_2 | Poisson | 0.299 | 0.333 | cut_edge |
| zeta_zeros:cycle_4 | GUE | 0.308 | 0.333 | cut_edge |
| string_vibration:cycle_6 | Poisson | 0.551 | 0.500 | cut_edge |
| random_matrix:cycle_7 | GUE | 0.352 | 0.167 | cut_edge |
| brownian_motion:cycle_12 | Poisson | 0.438 | 0.250 | cut_edge |

## Key Findings
1. Verificato: il perimetro e' quello richiesto, 13 righe con 8 GUE e 5 Poisson, senza errori di ricostruzione.
2. Verificato: la separazione non e' binaria nel grafo osservabile; 8/27 edge attraversano la label GUE/Poisson.
3. Verificato: quattro righe hanno insieme margin bassa e vicini cross-label: `numeri_primi:cycle_3`, `percolation:cycle_9`, `reaction_diffusion:cycle_11`, `logistica_biforcazione_var_3.5699:cycle_13`.
4. Verificato: la curvatura media degli edge cross-label (-4.625) non si separa nettamente dagli edge same-label (-4.789474). La curvatura Forman non basta da sola; il contenuto vive nella combinazione margin + vicinato.

## Verdict
CONSTRAINT

Il boundary trasferisce come geometria di righe ponte nel perimetro 8/5. Non trasferisce come singolo scalare di curvatura e non autorizza una tassonomia pulita GUE vs Poisson.

## Bicono della scoperta
- **Due radici**: label spettrale GUE/Poisson; posizione geometrica nel grafo osservabile.
- **Singolare**: la riga di dominio prima della classificazione, con ordine, rigidita' e null gia' presenti.
- **Invariante di passaggio**: il nodo a bassa margin con almeno un legame cross-label.
- **Campo di possibilita**: qui diventa possibile cercare il boundary come nodo ponte in spettri fisici finiti; qui diventa non-possibile usare la curvatura media o la label sola come terzo incluso.

## Files
- Script: `tools/exp_boundary_graph_curvature_gate.py`
- Data: `tools/data/boundary_graph_curvature_gate_20260515_1855.json`
- Report: `tools/data/reports/agent_20260515_1855.md`

exec
/bin/bash -lc 'git status --short tools/exp_boundary_graph_curvature_gate.py tools/data/boundary_graph_curvature_gate_20260515_1855.json tools/data/reports/agent_20260515_1855.md' in /opt/MM_D-ND
 succeeded in 0ms:
?? tools/data/boundary_graph_curvature_gate_20260515_1855.json
?? tools/data/reports/agent_20260515_1855.md
?? tools/exp_boundary_graph_curvature_gate.py

exec
/bin/bash -lc 'python -m json.tool tools/data/boundary_graph_curvature_gate_20260515_1855.json >/tmp/boundary_graph_curvature_gate_20260515_1855.checked.json && wc -c tools/data/boundary_graph_curvature_gate_20260515_1855.json' in /opt/MM_D-ND
 succeeded in 0ms:
16573 tools/data/boundary_graph_curvature_gate_20260515_1855.json

exec
/bin/bash -lc 'python -m py_compile tools/exp_boundary_graph_curvature_gate.py' in /opt/MM_D-ND
 succeeded in 0ms:
diff --git a/tools/data/reports/agent_20260515_1855.md b/tools/data/reports/agent_20260515_1855.md
new file mode 100644
index 0000000000000000000000000000000000000000..dbd0843221fbc2a8df877a64691c87e3aa802a79
--- /dev/null
+++ b/tools/data/reports/agent_20260515_1855.md
@@ -0,0 +1,89 @@
+# Agent Report - Boundary Graph Curvature Gate
+**Date**: 2026-05-15 18:55
+**Piano**: 120
+**Tension explored**: BOUNDARY (0.8)
+observables_registry: 1.0.0-2026-05-06
+observables_used: [SR, SR2, L1, L2, triple_var, SR_local_rigidity, z_SR, z_SR2, z_L1, z_L2, z_triple_var]
+**observable_contract**: claim=il confine GUE/Poisson e' operativo quando la geometria row-aligned produce nodi cross-label a margine basso; observable=kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature; operator=grafo kNN nello spazio canonical+rigidity+shuffle-z; generator=dnd_autoricerca row_spacings via semireal boundary transfer gate; denominator=13 righe base BOUNDARY, 8 GUE e 5 Poisson; non_possible=terzo incluso se non compaiono edge cross-label o se tutti gli edge cross-label restano interni ad alta margin; not_tested=V_c, denominatori Sturmian, origine analitica delle label.
+
+## Respiro fuori-tempo
+- **Combo**: A9 terzo incluso + incrocio QxG continuo/discreto + grafo della conoscenza come nodo/cut + tensione BOUNDARY "8 domini GUE, 5 Poisson".
+- **Dipolo / punto-zero**: repulsione spettrale / indipendenza spettrale. Punto-zero: riga di dominio che non decide per label ma connette i due poli nel grafo osservabile.
+- **Piano superiore**: grafo della conoscenza con curvatura su edge; il boundary e' un nodo/ponte prima di essere classe.
+- **Operatori laterali scelti**: graph spectrum/curvature, spectral rigidity, GUE/Poisson. La rigidita' entra come osservabile esplicita, GUE/Poisson solo come audit label.
+- **Contaminazione cognitiva**: CE-none: il campo letto non contiene un archivio enzimi cognitivi attivo; il layer cognitivo resta spento per non aggiungere semantica.
+- **Proto-ipotesi**: il boundary non coincide con una beta locale o con una label. Esiste come riga a bassa distanza dai centroidi e con vicini dell'altro polo.
+- **Proiezione**: se il terzo incluso e' operativo, il grafo kNN delle 13 righe deve produrre edge GUE/Poisson e almeno una riga a margine basso; se il boundary e' solo tassonomia, il grafo resta in due componenti o attraversa solo con margin alta.
+
+## Aderenza alla direzione
+- `relation`: `follows_direction`
+- `why`: il ciclo misura esplicitamente il perimetro vivo 8 GUE / 5 Poisson e chiede dove il confine funziona come terzo incluso operativo.
+- `not_drift`: non usa il report Sturmian bloccato, non misura V_c, non usa phi/silver/bronze come sorgente; le label GUE/Poisson sono audit metadata, non operatore decisionale.
+
+## Claim Under Test
+> Nel perimetro base BOUNDARY, il terzo incluso appare come sottoinsieme di righe cross-label a margine basso nel grafo degli osservabili, non come l'intera divisione GUE/Poisson.
+
+## Question
+Il confine 8 GUE / 5 Poisson resta una separazione binaria o produce nodi ponte misurabili nel grafo osservabile?
+
+## Ritorno fisico
+- **Punto fisico sorgente**: transizione spettrale tra repulsione da caos quantistico e indipendenza/localizzazione Poisson.
+- **Attraversamento matematico**: grafo kNN row-aligned con osservabili canonici, rigidita' spettrale e z contro shuffle.
+- **Punto fisico di ritorno**: audit di spettri finiti in sistemi mesoscopici o fotonici disordinati vicino a mobility edge/localization crossover.
+- **Relazione nuova**: il test non chiede solo il valore medio della statistica di spacing; chiede quali campioni diventano righe ponte tra regime repulsivo e regime indipendente.
+- **Osservabile/test fisico possibile**: su finestre energetiche sperimentali, costruire lo stesso grafo con spacing ratio, rigidita' locale e shuffle-z; boundary se compaiono nodi cross-regime a margine basso.
+- **Se fallisce**: ritorno_fisico_assente se l'effetto sparisce con piu' campioni, con unfolding alternativo o con labels sperimentali indipendenti.
+
+## Experiment Design
+- **Metrica**: SR, SR2, L1, L2, triple_var, SR_local_rigidity, z-score original-vs-shuffle per gli osservabili canonici.
+- **Scope**: `boundary_denominator_prescan_full_20260509_1500.json`, righe base BOUNDARY con `source_domain_type in {GUE, Poisson}`.
+- **Null baseline**: 64 shuffle per riga, preservando marginale degli spacing e rompendo l'ordine.
+- **N campioni**: 13 righe analizzate; 2048 gap massimo per riga; 0 errori.
+- **Grafo**: kNN con k=3 nello spazio standardizzato degli 11 feature.
+- **Contratto osservabile-operatore**: il claim usa posizione nel grafo, frazione di vicini cross-label, margin ai centroidi GUE/Poisson e curvatura Forman non pesata. `gap_ratio`, `V_c` e denominatori Sturmian non sono testati.
+
+## Results
+| observable | value |
+|---|---:|
+| rows analyzed | 13 |
+| GUE / Poisson rows | 8 / 5 |
+| graph edges total | 27 |
+| cross-label edges | 8 |
+| same-label edges | 19 |
+| cross edge curvature mean | -4.625 |
+| same edge curvature mean | -4.789474 |
+| third-included candidates | 4 |
+
+| row | label | margin | cross-neighbor fraction | state |
+|---|---:|---:|---:|---|
+| numeri_primi:cycle_3 | GUE | 0.223 | 0.250 | third_included_candidate |
+| percolation:cycle_9 | Poisson | 0.089 | 1.000 | third_included_candidate |
+| reaction_diffusion:cycle_11 | GUE | 0.115 | 0.750 | third_included_candidate |
+| logistica_biforcazione_var_3.5699:cycle_13 | GUE | 0.217 | 0.250 | third_included_candidate |
+| pendolo_doppio:cycle_2 | Poisson | 0.299 | 0.333 | cut_edge |
+| zeta_zeros:cycle_4 | GUE | 0.308 | 0.333 | cut_edge |
+| string_vibration:cycle_6 | Poisson | 0.551 | 0.500 | cut_edge |
+| random_matrix:cycle_7 | GUE | 0.352 | 0.167 | cut_edge |
+| brownian_motion:cycle_12 | Poisson | 0.438 | 0.250 | cut_edge |
+
+## Key Findings
+1. Verificato: il perimetro e' quello richiesto, 13 righe con 8 GUE e 5 Poisson, senza errori di ricostruzione.
+2. Verificato: la separazione non e' binaria nel grafo osservabile; 8/27 edge attraversano la label GUE/Poisson.
+3. Verificato: quattro righe hanno insieme margin bassa e vicini cross-label: `numeri_primi:cycle_3`, `percolation:cycle_9`, `reaction_diffusion:cycle_11`, `logistica_biforcazione_var_3.5699:cycle_13`.
+4. Verificato: la curvatura media degli edge cross-label (-4.625) non si separa nettamente dagli edge same-label (-4.789474). La curvatura Forman non basta da sola; il contenuto vive nella combinazione margin + vicinato.
+
+## Verdict
+CONSTRAINT
+
+Il boundary trasferisce come geometria di righe ponte nel perimetro 8/5. Non trasferisce come singolo scalare di curvatura e non autorizza una tassonomia pulita GUE vs Poisson.
+
+## Bicono della scoperta
+- **Due radici**: label spettrale GUE/Poisson; posizione geometrica nel grafo osservabile.
+- **Singolare**: la riga di dominio prima della classificazione, con ordine, rigidita' e null gia' presenti.
+- **Invariante di passaggio**: il nodo a bassa margin con almeno un legame cross-label.
+- **Campo di possibilita**: qui diventa possibile cercare il boundary come nodo ponte in spettri fisici finiti; qui diventa non-possibile usare la curvatura media o la label sola come terzo incluso.
+
+## Files
+- Script: `tools/exp_boundary_graph_curvature_gate.py`
+- Data: `tools/data/boundary_graph_curvature_gate_20260515_1855.json`
+- Report: `tools/data/reports/agent_20260515_1855.md`
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

exec
/bin/bash -lc "git status --short | sed -n '1,80p'" in /opt/MM_D-ND
 succeeded in 0ms:
 M applications/INDEX.draft.json
 M docs/guides/lab_current_state_logic_2026-05-08.md
 M tools/LAB_AGENT_CONTEXT.md
 M tools/build_agent_field.py
 M tools/build_lab_graph.py
 M tools/data/agent_field_live.md
 M tools/data/b2_apply_log.jsonl
 M tools/data/ciclo_memoria.json
 M tools/data/consecutio.json
 M tools/data/consecutio_processata.json
 M tools/data/domandatore_pre_cycle.json
 M tools/data/domande_fondamentali.json
 M tools/data/g1_log.jsonl
 M tools/data/g2_log.jsonl
 M tools/data/graph_completion/latest.json
 M tools/data/incrocio_risultato.json
 M tools/data/knowledge_state.json
 M tools/data/lab_bridge_issues.jsonl
 M tools/data/lab_data.json
 M tools/data/lab_graph.json
 M tools/data/lab_health.json
 M tools/data/lab_session_log.jsonl
 M tools/data/pipeline_state.json
 M tools/data/ponti_evoluti.json
 M tools/data/repairs/repair_run_log.jsonl
 M tools/data/reports/latest.md
 M tools/data/seme.json
 D tools/data/seme_archive/piano_37.json
 D tools/data/seme_archive/piano_38.json
 D tools/data/seme_archive/piano_4.json
 D tools/data/seme_archive/piano_5.json
 D tools/data/seme_archive/piano_6.json
 D tools/data/seme_archive/piano_7.json
 D tools/data/seme_archive/piano_8.json
 D tools/data/seme_archive/piano_9.json
 M tools/data/seme_backup_pre_run.json
 M tools/data/tm1_figures/tensions.json
 M tools/data/tm1_figures/tensions_raw.json
 M tools/data/valutatore_log.jsonl
 M tools/evolution_report.md
 M tools/graph_completion_compiler.py
 M tools/lab_agent.sh
 M tools/lab_falsifier.py
?? applications/scoperte/20260513_0330_prime-vs-mod6-sr-boundary_auto/
?? applications/scoperte/20260514_1330_sr-residual-width-audit_auto/
?? applications/scoperte/20260514_1631_chiusura-tester-rimbalzo-fisico-w6_auto/
?? applications/scoperte/20260514_1640_rafforzamento-tester-fisico-goegue-n-curve_auto/
?? applications/scoperte/20260515_1712_primemod6-generative-null-w2048_auto/
?? applications/scoperte/20260515_1816_v2-generator-scaling-gate_auto/
?? applications/soluzioni/20260513_0330_prime-vs-mod6-sr-boundary/
?? applications/soluzioni/20260514_1330_sr-residual-width-audit/
?? applications/soluzioni/20260514_1631_chiusura-tester-rimbalzo-fisico-w6/
?? applications/soluzioni/20260514_1640_rafforzamento-tester-fisico-goegue-n-curve/
?? applications/soluzioni/20260515_1712_primemod6-generative-null-w2048/
?? applications/soluzioni/20260515_1816_v2-generator-scaling-gate/
?? docs/guides/lab_preflight_agent_2026-05-14.md
?? docs/operations/
?? tools/build_safe_agent_field_preview.py
?? tools/compose_filtered_field_preview.py
?? tools/compose_supervised_entry_preview.py
?? tools/data/aeternitas/aeternitas_20260512_033539.json
?? tools/data/aeternitas/aeternitas_20260513_033605.json
?? tools/data/aeternitas/aeternitas_20260514_033420.json
?? tools/data/aeternitas/aeternitas_20260514_133424.json
?? tools/data/aeternitas/aeternitas_20260514_150454.json
?? tools/data/aeternitas/aeternitas_20260514_161058.json
?? tools/data/aeternitas/aeternitas_20260514_161719.json
?? tools/data/aeternitas/aeternitas_20260514_163527.json
?? tools/data/aeternitas/aeternitas_20260514_164509.json
?? tools/data/aeternitas/aeternitas_20260514_165437.json
?? tools/data/aeternitas/aeternitas_20260514_170109.json
?? tools/data/aeternitas/aeternitas_20260514_171152.json
?? tools/data/aeternitas/aeternitas_20260514_185450.json
?? tools/data/aeternitas/aeternitas_20260515_162727.json
?? tools/data/aeternitas/aeternitas_20260515_165116.json
?? tools/data/aeternitas/aeternitas_20260515_170328.json
?? tools/data/aeternitas/aeternitas_20260515_171005.json
?? tools/data/aeternitas/aeternitas_20260515_171725.json
?? tools/data/aeternitas/aeternitas_20260515_172913.json
?? tools/data/aeternitas/aeternitas_20260515_174023.json

diff --git a/tools/data/reports/agent_20260515_1855.md b/tools/data/reports/agent_20260515_1855.md
new file mode 100644
index 0000000000000000000000000000000000000000..dbd0843221fbc2a8df877a64691c87e3aa802a79
--- /dev/null
+++ b/tools/data/reports/agent_20260515_1855.md
@@ -0,0 +1,89 @@
+# Agent Report - Boundary Graph Curvature Gate
+**Date**: 2026-05-15 18:55
+**Piano**: 120
+**Tension explored**: BOUNDARY (0.8)
+observables_registry: 1.0.0-2026-05-06
+observables_used: [SR, SR2, L1, L2, triple_var, SR_local_rigidity, z_SR, z_SR2, z_L1, z_L2, z_triple_var]
+**observable_contract**: claim=il confine GUE/Poisson e' operativo quando la geometria row-aligned produce nodi cross-label a margine basso; observable=kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature; operator=grafo kNN nello spazio canonical+rigidity+shuffle-z; generator=dnd_autoricerca row_spacings via semireal boundary transfer gate; denominator=13 righe base BOUNDARY, 8 GUE e 5 Poisson; non_possible=terzo incluso se non compaiono edge cross-label o se tutti gli edge cross-label restano interni ad alta margin; not_tested=V_c, denominatori Sturmian, origine analitica delle label.
+
+## Respiro fuori-tempo
+- **Combo**: A9 terzo incluso + incrocio QxG continuo/discreto + grafo della conoscenza come nodo/cut + tensione BOUNDARY "8 domini GUE, 5 Poisson".
+- **Dipolo / punto-zero**: repulsione spettrale / indipendenza spettrale. Punto-zero: riga di dominio che non decide per label ma connette i due poli nel grafo osservabile.
+- **Piano superiore**: grafo della conoscenza con curvatura su edge; il boundary e' un nodo/ponte prima di essere classe.
+- **Operatori laterali scelti**: graph spectrum/curvature, spectral rigidity, GUE/Poisson. La rigidita' entra come osservabile esplicita, GUE/Poisson solo come audit label.
+- **Contaminazione cognitiva**: CE-none: il campo letto non contiene un archivio enzimi cognitivi attivo; il layer cognitivo resta spento per non aggiungere semantica.
+- **Proto-ipotesi**: il boundary non coincide con una beta locale o con una label. Esiste come riga a bassa distanza dai centroidi e con vicini dell'altro polo.
+- **Proiezione**: se il terzo incluso e' operativo, il grafo kNN delle 13 righe deve produrre edge GUE/Poisson e almeno una riga a margine basso; se il boundary e' solo tassonomia, il grafo resta in due componenti o attraversa solo con margin alta.
+
+## Aderenza alla direzione
+- `relation`: `follows_direction`
+- `why`: il ciclo misura esplicitamente il perimetro vivo 8 GUE / 5 Poisson e chiede dove il confine funziona come terzo incluso operativo.
+- `not_drift`: non usa il report Sturmian bloccato, non misura V_c, non usa phi/silver/bronze come sorgente; le label GUE/Poisson sono audit metadata, non operatore decisionale.
+
+## Claim Under Test
+> Nel perimetro base BOUNDARY, il terzo incluso appare come sottoinsieme di righe cross-label a margine basso nel grafo degli osservabili, non come l'intera divisione GUE/Poisson.
+
+## Question
+Il confine 8 GUE / 5 Poisson resta una separazione binaria o produce nodi ponte misurabili nel grafo osservabile?
+
+## Ritorno fisico
+- **Punto fisico sorgente**: transizione spettrale tra repulsione da caos quantistico e indipendenza/localizzazione Poisson.
+- **Attraversamento matematico**: grafo kNN row-aligned con osservabili canonici, rigidita' spettrale e z contro shuffle.
+- **Punto fisico di ritorno**: audit di spettri finiti in sistemi mesoscopici o fotonici disordinati vicino a mobility edge/localization crossover.
+- **Relazione nuova**: il test non chiede solo il valore medio della statistica di spacing; chiede quali campioni diventano righe ponte tra regime repulsivo e regime indipendente.
+- **Osservabile/test fisico possibile**: su finestre energetiche sperimentali, costruire lo stesso grafo con spacing ratio, rigidita' locale e shuffle-z; boundary se compaiono nodi cross-regime a margine basso.
+- **Se fallisce**: ritorno_fisico_assente se l'effetto sparisce con piu' campioni, con unfolding alternativo o con labels sperimentali indipendenti.
+
+## Experiment Design
+- **Metrica**: SR, SR2, L1, L2, triple_var, SR_local_rigidity, z-score original-vs-shuffle per gli osservabili canonici.
+- **Scope**: `boundary_denominator_prescan_full_20260509_1500.json`, righe base BOUNDARY con `source_domain_type in {GUE, Poisson}`.
+- **Null baseline**: 64 shuffle per riga, preservando marginale degli spacing e rompendo l'ordine.
+- **N campioni**: 13 righe analizzate; 2048 gap massimo per riga; 0 errori.
+- **Grafo**: kNN con k=3 nello spazio standardizzato degli 11 feature.
+- **Contratto osservabile-operatore**: il claim usa posizione nel grafo, frazione di vicini cross-label, margin ai centroidi GUE/Poisson e curvatura Forman non pesata. `gap_ratio`, `V_c` e denominatori Sturmian non sono testati.
+
+## Results
+| observable | value |
+|---|---:|
+| rows analyzed | 13 |
+| GUE / Poisson rows | 8 / 5 |
+| graph edges total | 27 |
+| cross-label edges | 8 |
+| same-label edges | 19 |
+| cross edge curvature mean | -4.625 |
+| same edge curvature mean | -4.789474 |
+| third-included candidates | 4 |
+
+| row | label | margin | cross-neighbor fraction | state |
+|---|---:|---:|---:|---|
+| numeri_primi:cycle_3 | GUE | 0.223 | 0.250 | third_included_candidate |
+| percolation:cycle_9 | Poisson | 0.089 | 1.000 | third_included_candidate |
+| reaction_diffusion:cycle_11 | GUE | 0.115 | 0.750 | third_included_candidate |
+| logistica_biforcazione_var_3.5699:cycle_13 | GUE | 0.217 | 0.250 | third_included_candidate |
+| pendolo_doppio:cycle_2 | Poisson | 0.299 | 0.333 | cut_edge |
+| zeta_zeros:cycle_4 | GUE | 0.308 | 0.333 | cut_edge |
+| string_vibration:cycle_6 | Poisson | 0.551 | 0.500 | cut_edge |
+| random_matrix:cycle_7 | GUE | 0.352 | 0.167 | cut_edge |
+| brownian_motion:cycle_12 | Poisson | 0.438 | 0.250 | cut_edge |
+
+## Key Findings
+1. Verificato: il perimetro e' quello richiesto, 13 righe con 8 GUE e 5 Poisson, senza errori di ricostruzione.
+2. Verificato: la separazione non e' binaria nel grafo osservabile; 8/27 edge attraversano la label GUE/Poisson.
+3. Verificato: quattro righe hanno insieme margin bassa e vicini cross-label: `numeri_primi:cycle_3`, `percolation:cycle_9`, `reaction_diffusion:cycle_11`, `logistica_biforcazione_var_3.5699:cycle_13`.
+4. Verificato: la curvatura media degli edge cross-label (-4.625) non si separa nettamente dagli edge same-label (-4.789474). La curvatura Forman non basta da sola; il contenuto vive nella combinazione margin + vicinato.
+
+## Verdict
+CONSTRAINT
+
+Il boundary trasferisce come geometria di righe ponte nel perimetro 8/5. Non trasferisce come singolo scalare di curvatura e non autorizza una tassonomia pulita GUE vs Poisson.
+
+## Bicono della scoperta
+- **Due radici**: label spettrale GUE/Poisson; posizione geometrica nel grafo osservabile.
+- **Singolare**: la riga di dominio prima della classificazione, con ordine, rigidita' e null gia' presenti.
+- **Invariante di passaggio**: il nodo a bassa margin con almeno un legame cross-label.
+- **Campo di possibilita**: qui diventa possibile cercare il boundary come nodo ponte in spettri fisici finiti; qui diventa non-possibile usare la curvatura media o la label sola come terzo incluso.
+
+## Files
+- Script: `tools/exp_boundary_graph_curvature_gate.py`
+- Data: `tools/data/boundary_graph_curvature_gate_20260515_1855.json`
+- Report: `tools/data/reports/agent_20260515_1855.md`
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

codex
Eseguito il cycle e scritto il report richiesto.

Creati:
- [tools/exp_boundary_graph_curvature_gate.py](/opt/MM_D-ND/tools/exp_boundary_graph_curvature_gate.py)
- [tools/data/boundary_graph_curvature_gate_20260515_1855.json](/opt/MM_D-ND/tools/data/boundary_graph_curvature_gate_20260515_1855.json)
- [tools/data/reports/agent_20260515_1855.md](/opt/MM_D-ND/tools/data/reports/agent_20260515_1855.md)

Risultato: `CONSTRAINT`. Il boundary 8 GUE / 5 Poisson non appare come separazione binaria pulita: nel grafo osservabile ci sono `8/27` edge cross-label e 4 righe ponte candidate. La curvatura media da sola non separa il confine; il segnale sta nella combinazione `margin + vicinato cross-label`.

Verifiche fatte: JSON valido, script compilato con `py_compile`, report letto dopo scrittura.
diff --git a/tools/data/reports/agent_20260515_1855.md b/tools/data/reports/agent_20260515_1855.md
new file mode 100644
index 0000000000000000000000000000000000000000..dbd0843221fbc2a8df877a64691c87e3aa802a79
--- /dev/null
+++ b/tools/data/reports/agent_20260515_1855.md
@@ -0,0 +1,89 @@
+# Agent Report - Boundary Graph Curvature Gate
+**Date**: 2026-05-15 18:55
+**Piano**: 120
+**Tension explored**: BOUNDARY (0.8)
+observables_registry: 1.0.0-2026-05-06
+observables_used: [SR, SR2, L1, L2, triple_var, SR_local_rigidity, z_SR, z_SR2, z_L1, z_L2, z_triple_var]
+**observable_contract**: claim=il confine GUE/Poisson e' operativo quando la geometria row-aligned produce nodi cross-label a margine basso; observable=kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature; operator=grafo kNN nello spazio canonical+rigidity+shuffle-z; generator=dnd_autoricerca row_spacings via semireal boundary transfer gate; denominator=13 righe base BOUNDARY, 8 GUE e 5 Poisson; non_possible=terzo incluso se non compaiono edge cross-label o se tutti gli edge cross-label restano interni ad alta margin; not_tested=V_c, denominatori Sturmian, origine analitica delle label.
+
+## Respiro fuori-tempo
+- **Combo**: A9 terzo incluso + incrocio QxG continuo/discreto + grafo della conoscenza come nodo/cut + tensione BOUNDARY "8 domini GUE, 5 Poisson".
+- **Dipolo / punto-zero**: repulsione spettrale / indipendenza spettrale. Punto-zero: riga di dominio che non decide per label ma connette i due poli nel grafo osservabile.
+- **Piano superiore**: grafo della conoscenza con curvatura su edge; il boundary e' un nodo/ponte prima di essere classe.
+- **Operatori laterali scelti**: graph spectrum/curvature, spectral rigidity, GUE/Poisson. La rigidita' entra come osservabile esplicita, GUE/Poisson solo come audit label.
+- **Contaminazione cognitiva**: CE-none: il campo letto non contiene un archivio enzimi cognitivi attivo; il layer cognitivo resta spento per non aggiungere semantica.
+- **Proto-ipotesi**: il boundary non coincide con una beta locale o con una label. Esiste come riga a bassa distanza dai centroidi e con vicini dell'altro polo.
+- **Proiezione**: se il terzo incluso e' operativo, il grafo kNN delle 13 righe deve produrre edge GUE/Poisson e almeno una riga a margine basso; se il boundary e' solo tassonomia, il grafo resta in due componenti o attraversa solo con margin alta.
+
+## Aderenza alla direzione
+- `relation`: `follows_direction`
+- `why`: il ciclo misura esplicitamente il perimetro vivo 8 GUE / 5 Poisson e chiede dove il confine funziona come terzo incluso operativo.
+- `not_drift`: non usa il report Sturmian bloccato, non misura V_c, non usa phi/silver/bronze come sorgente; le label GUE/Poisson sono audit metadata, non operatore decisionale.
+
+## Claim Under Test
+> Nel perimetro base BOUNDARY, il terzo incluso appare come sottoinsieme di righe cross-label a margine basso nel grafo degli osservabili, non come l'intera divisione GUE/Poisson.
+
+## Question
+Il confine 8 GUE / 5 Poisson resta una separazione binaria o produce nodi ponte misurabili nel grafo osservabile?
+
+## Ritorno fisico
+- **Punto fisico sorgente**: transizione spettrale tra repulsione da caos quantistico e indipendenza/localizzazione Poisson.
+- **Attraversamento matematico**: grafo kNN row-aligned con osservabili canonici, rigidita' spettrale e z contro shuffle.
+- **Punto fisico di ritorno**: audit di spettri finiti in sistemi mesoscopici o fotonici disordinati vicino a mobility edge/localization crossover.
+- **Relazione nuova**: il test non chiede solo il valore medio della statistica di spacing; chiede quali campioni diventano righe ponte tra regime repulsivo e regime indipendente.
+- **Osservabile/test fisico possibile**: su finestre energetiche sperimentali, costruire lo stesso grafo con spacing ratio, rigidita' locale e shuffle-z; boundary se compaiono nodi cross-regime a margine basso.
+- **Se fallisce**: ritorno_fisico_assente se l'effetto sparisce con piu' campioni, con unfolding alternativo o con labels sperimentali indipendenti.
+
+## Experiment Design
+- **Metrica**: SR, SR2, L1, L2, triple_var, SR_local_rigidity, z-score original-vs-shuffle per gli osservabili canonici.
+- **Scope**: `boundary_denominator_prescan_full_20260509_1500.json`, righe base BOUNDARY con `source_domain_type in {GUE, Poisson}`.
+- **Null baseline**: 64 shuffle per riga, preservando marginale degli spacing e rompendo l'ordine.
+- **N campioni**: 13 righe analizzate; 2048 gap massimo per riga; 0 errori.
+- **Grafo**: kNN con k=3 nello spazio standardizzato degli 11 feature.
+- **Contratto osservabile-operatore**: il claim usa posizione nel grafo, frazione di vicini cross-label, margin ai centroidi GUE/Poisson e curvatura Forman non pesata. `gap_ratio`, `V_c` e denominatori Sturmian non sono testati.
+
+## Results
+| observable | value |
+|---|---:|
+| rows analyzed | 13 |
+| GUE / Poisson rows | 8 / 5 |
+| graph edges total | 27 |
+| cross-label edges | 8 |
+| same-label edges | 19 |
+| cross edge curvature mean | -4.625 |
+| same edge curvature mean | -4.789474 |
+| third-included candidates | 4 |
+
+| row | label | margin | cross-neighbor fraction | state |
+|---|---:|---:|---:|---|
+| numeri_primi:cycle_3 | GUE | 0.223 | 0.250 | third_included_candidate |
+| percolation:cycle_9 | Poisson | 0.089 | 1.000 | third_included_candidate |
+| reaction_diffusion:cycle_11 | GUE | 0.115 | 0.750 | third_included_candidate |
+| logistica_biforcazione_var_3.5699:cycle_13 | GUE | 0.217 | 0.250 | third_included_candidate |
+| pendolo_doppio:cycle_2 | Poisson | 0.299 | 0.333 | cut_edge |
+| zeta_zeros:cycle_4 | GUE | 0.308 | 0.333 | cut_edge |
+| string_vibration:cycle_6 | Poisson | 0.551 | 0.500 | cut_edge |
+| random_matrix:cycle_7 | GUE | 0.352 | 0.167 | cut_edge |
+| brownian_motion:cycle_12 | Poisson | 0.438 | 0.250 | cut_edge |
+
+## Key Findings
+1. Verificato: il perimetro e' quello richiesto, 13 righe con 8 GUE e 5 Poisson, senza errori di ricostruzione.
+2. Verificato: la separazione non e' binaria nel grafo osservabile; 8/27 edge attraversano la label GUE/Poisson.
+3. Verificato: quattro righe hanno insieme margin bassa e vicini cross-label: `numeri_primi:cycle_3`, `percolation:cycle_9`, `reaction_diffusion:cycle_11`, `logistica_biforcazione_var_3.5699:cycle_13`.
+4. Verificato: la curvatura media degli edge cross-label (-4.625) non si separa nettamente dagli edge same-label (-4.789474). La curvatura Forman non basta da sola; il contenuto vive nella combinazione margin + vicinato.
+
+## Verdict
+CONSTRAINT
+
+Il boundary trasferisce come geometria di righe ponte nel perimetro 8/5. Non trasferisce come singolo scalare di curvatura e non autorizza una tassonomia pulita GUE vs Poisson.
+
+## Bicono della scoperta
+- **Due radici**: label spettrale GUE/Poisson; posizione geometrica nel grafo osservabile.
+- **Singolare**: la riga di dominio prima della classificazione, con ordine, rigidita' e null gia' presenti.
+- **Invariante di passaggio**: il nodo a bassa margin con almeno un legame cross-label.
+- **Campo di possibilita**: qui diventa possibile cercare il boundary come nodo ponte in spettri fisici finiti; qui diventa non-possibile usare la curvatura media o la label sola come terzo incluso.
+
+## Files
+- Script: `tools/exp_boundary_graph_curvature_gate.py`
+- Data: `tools/data/boundary_graph_curvature_gate_20260515_1855.json`
+- Report: `tools/data/reports/agent_20260515_1855.md`
diff --git a/tools/exp_boundary_graph_curvature_gate.py b/tools/exp_boundary_graph_curvature_gate.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d5b87bbcc473221dcf10fec74e75164354fde2
--- /dev/null
+++ b/tools/exp_boundary_graph_curvature_gate.py
@@ -0,0 +1,300 @@
+#!/usr/bin/env python3
+"""
+Graph-curvature gate for the 8 GUE / 5 Poisson BOUNDARY perimeter.
+
+The unit is the row-aligned domain/window from the base BOUNDARY perimeter.
+Labels are kept as audit metadata; the geometry is built from observables:
+canonical registry values, explicit spectral rigidity, and shuffle z values.
+"""
+
+from __future__ import annotations
+
+import argparse
+import json
+import math
+from pathlib import Path
+from typing import Any
+
+import numpy as np
+
+from exp_semireal_boundary_transfer_gate import row_spacings
+from observables_registry import (
+    OBSERVABLES_CANONICAL,
+    OBSERVABLES_REGISTRY_VERSION,
+    SR_local_rigidity,
+)
+
+
+OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
+FEATURE_NAMES = OBS_NAMES + ["SR_local_rigidity"] + [f"z_{name}" for name in OBS_NAMES]
+
+
+def load_scope(path: Path) -> list[dict[str, Any]]:
+    with path.open() as f:
+        data = json.load(f)
+    rows = data.get("rows", [])
+    if not isinstance(rows, list):
+        raise ValueError(f"{path} does not contain rows")
+    return rows
+
+
+def finite(value: Any) -> bool:
+    return isinstance(value, (int, float)) and math.isfinite(float(value))
+
+
+def compute_observables(gaps: np.ndarray) -> dict[str, float]:
+    values = {name: float(fn(gaps)) for name, fn in OBSERVABLES_CANONICAL.items()}
+    values["SR_local_rigidity"] = float(SR_local_rigidity(gaps))
+    return values
+
+
+def shuffle_z(
+    gaps: np.ndarray,
+    original: dict[str, float],
+    n_shuffle: int,
+    rng: np.random.Generator,
+) -> dict[str, float]:
+    samples = {name: [] for name in OBS_NAMES}
+    for _ in range(n_shuffle):
+        shuffled = rng.permutation(gaps)
+        obs = compute_observables(shuffled)
+        for name in OBS_NAMES:
+            samples[name].append(obs[name])
+
+    z = {}
+    for name in OBS_NAMES:
+        arr = np.asarray(samples[name], dtype=float)
+        sd = float(np.std(arr, ddof=1)) if len(arr) > 1 else 0.0
+        mean = float(np.mean(arr)) if len(arr) else 0.0
+        z[name] = float((original[name] - mean) / sd) if sd > 1e-15 else 0.0
+    return z
+
+
+def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
+    matrix = []
+    for row in rows:
+        obs = row["observables"]
+        z = row["shuffle_z"]
+        matrix.append([obs[name] for name in OBS_NAMES] + [obs["SR_local_rigidity"]] + [z[name] for name in OBS_NAMES])
+    x = np.asarray(matrix, dtype=float)
+    center = np.mean(x, axis=0)
+    scale = np.std(x, axis=0, ddof=1)
+    scale[scale <= 1e-15] = 1.0
+    return (x - center) / scale
+
+
+def build_knn_edges(x: np.ndarray, k: int) -> list[tuple[int, int, float]]:
+    n = len(x)
+    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
+    edges: set[tuple[int, int]] = set()
+    for i in range(n):
+        nearest = np.argsort(distances[i])[1 : k + 1]
+        for j in nearest:
+            edges.add((min(i, int(j)), max(i, int(j))))
+    return [(i, j, float(distances[i, j])) for i, j in sorted(edges)]
+
+
+def classify_geometry(rows: list[dict[str, Any]], x: np.ndarray, k: int) -> dict[str, Any]:
+    labels = [row["source_domain_type"] for row in rows]
+    gue_idx = [i for i, label in enumerate(labels) if label == "GUE"]
+    poi_idx = [i for i, label in enumerate(labels) if label == "Poisson"]
+    if not gue_idx or not poi_idx:
+        raise ValueError("scope must include both GUE and Poisson rows")
+
+    c_gue = np.mean(x[gue_idx], axis=0)
+    c_poi = np.mean(x[poi_idx], axis=0)
+    edges = build_knn_edges(x, k)
+    degree = {i: 0 for i in range(len(rows))}
+    for i, j, _ in edges:
+        degree[i] += 1
+        degree[j] += 1
+
+    row_out = []
+    third_rows = []
+    for i, row in enumerate(rows):
+        d_gue = float(np.linalg.norm(x[i] - c_gue))
+        d_poi = float(np.linalg.norm(x[i] - c_poi))
+        denom = d_gue + d_poi
+        centroid_coord = float((d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        centroid_margin = float(abs(d_gue - d_poi) / denom) if denom > 1e-15 else 0.0
+        incident = [(a, b, dist) for a, b, dist in edges if a == i or b == i]
+        cross = 0
+        cross_curvatures = []
+        same_curvatures = []
+        for a, b, _ in incident:
+            other = b if a == i else a
+            curvature = 4 - degree[a] - degree[b]
+            if labels[other] != labels[i]:
+                cross += 1
+                cross_curvatures.append(curvature)
+            else:
+                same_curvatures.append(curvature)
+        cross_fraction = float(cross / len(incident)) if incident else 0.0
+        state = "class_interior"
+        if cross_fraction > 0 and centroid_margin < 0.25:
+            state = "third_included_candidate"
+            third_rows.append(row["domain_window"])
+        elif cross_fraction > 0:
+            state = "cut_edge"
+        row_out.append(
+            {
+                "domain_window": row["domain_window"],
+                "domain": row["domain"],
+                "source_domain_type": row["source_domain_type"],
+                "degree": degree[i],
+                "centroid_coord": round(centroid_coord, 6),
+                "centroid_margin": round(centroid_margin, 6),
+                "cross_neighbor_fraction": round(cross_fraction, 6),
+                "cross_edge_curvature_mean": round(float(np.mean(cross_curvatures)), 6) if cross_curvatures else None,
+                "same_edge_curvature_mean": round(float(np.mean(same_curvatures)), 6) if same_curvatures else None,
+                "boundary_state": state,
+            }
+        )
+
+    cross_edges = [
+        {
+            "a": rows[i]["domain_window"],
+            "b": rows[j]["domain_window"],
+            "distance": round(dist, 6),
+            "forman_unweighted": 4 - degree[i] - degree[j],
+        }
+        for i, j, dist in edges
+        if labels[i] != labels[j]
+    ]
+    same_edges = [
+        {"distance": dist, "forman_unweighted": 4 - degree[i] - degree[j]}
+        for i, j, dist in edges
+        if labels[i] == labels[j]
+    ]
+
+    return {
+        "feature_names": FEATURE_NAMES,
+        "k": k,
+        "label_counts": {
+            "GUE": len(gue_idx),
+            "Poisson": len(poi_idx),
+        },
+        "edge_counts": {
+            "total": len(edges),
+            "cross_label": len(cross_edges),
+            "same_label": len(same_edges),
+        },
+        "curvature": {
+            "cross_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in cross_edges])), 6) if cross_edges else None,
+            "same_edge_mean": round(float(np.mean([e["forman_unweighted"] for e in same_edges])), 6) if same_edges else None,
+        },
+        "third_included_candidates": third_rows,
+        "rows": row_out,
+        "cross_edges": cross_edges,
+    }
+
+
+def run(args: argparse.Namespace) -> dict[str, Any]:
+    rng = np.random.default_rng(args.seed)
+    scope = load_scope(Path(args.scope))
+    selected = [row for row in scope if row.get("source_domain_type") in {"GUE", "Poisson"}]
+    selected = sorted(selected, key=lambda row: int(row["cycle"]))
+
+    rows = []
+    errors = []
+    for source in selected:
+        try:
+            gaps = row_spacings(source["domain"])
+            if len(gaps) < args.min_gaps:
+                errors.append(
+                    {
+                        "domain_window": source["domain_window"],
+                        "error": f"insufficient gaps {len(gaps)} < {args.min_gaps}",
+                    }
+                )
+                continue
+            gaps = gaps[: args.n_gaps] if len(gaps) > args.n_gaps else gaps
+            obs = compute_observables(gaps)
+            z = shuffle_z(gaps, obs, args.n_shuffle, rng)
+            rows.append(
+                {
+                    "domain_window": source["domain_window"],
+                    "domain": source["domain"],
+                    "cycle": source["cycle"],
+                    "source_domain_type": source["source_domain_type"],
+                    "n_gaps": int(len(gaps)),
+                    "observables": {key: round(value, 9) for key, value in obs.items()},
+                    "shuffle_z": {key: round(value, 6) for key, value in z.items()},
+                }
+            )
+        except Exception as exc:  # noqa: BLE001 - row-level telemetry is part of the result.
+            errors.append(
+                {
+                    "domain_window": source.get("domain_window"),
+                    "error": type(exc).__name__,
+                    "message": str(exc),
+                }
+            )
+
+    x = standardized_matrix(rows)
+    geometry = classify_geometry(rows, x, args.k)
+    output = {
+        "experiment": "boundary_graph_curvature_gate",
+        "question": "Does the 8 GUE / 5 Poisson perimeter expose a graph boundary row instead of a clean two-class split?",
+        "observables_registry": OBSERVABLES_REGISTRY_VERSION,
+        "observables_used": FEATURE_NAMES,
+        "params": vars(args),
+        "source_scope": args.scope,
+        "observable_contract": {
+            "claim": "the boundary is operational when row geometry produces cross-label graph nodes with low centroid margin",
+            "observable": "kNN graph position, cross-neighbor fraction, centroid margin, unweighted Forman edge curvature",
+            "operator": "row-aligned domain/window graph in canonical+rigidity+shuffle-z feature space",
+            "generator": "dnd_autoricerca row_spacings via semireal boundary transfer gate",
+            "denominator": "base BOUNDARY rows with source_domain_type in {GUE, Poisson}",
+            "non_possible": "third-included boundary if all cross-label edges vanish or only high-margin class interiors cross",
+            "not_tested": "V_c, Sturmian denominators, analytic source of each domain label",
+        },
+        "summary": {
+            "rows_analyzed": len(rows),
+            "errors": len(errors),
+            "third_included_candidate_count": len(geometry["third_included_candidates"]),
+            "third_included_candidates": geometry["third_included_candidates"],
+            "edge_counts": geometry["edge_counts"],
+            "curvature": geometry["curvature"],
+        },
+        "geometry": geometry,
+        "rows": rows,
+        "errors": errors,
+    }
+
+    out = Path(args.out)
+    out.parent.mkdir(parents=True, exist_ok=True)
+    out.write_text(json.dumps(output, indent=2) + "\n", encoding="utf-8")
+
+    print(f"observables_registry={OBSERVABLES_REGISTRY_VERSION}")
+    print(f"observables_used={FEATURE_NAMES}")
+    print(f"rows_analyzed={len(rows)} errors={len(errors)}")
+    print(f"label_counts={geometry['label_counts']}")
+    print(f"edge_counts={geometry['edge_counts']}")
+    print(f"curvature={geometry['curvature']}")
+    print(f"third_included_candidates={geometry['third_included_candidates']}")
+    for row in geometry["rows"]:
+        print(
+            f"{row['domain_window']}\t{row['source_domain_type']}\t"
+            f"margin={row['centroid_margin']:.3f}\tcross={row['cross_neighbor_fraction']:.3f}\t"
+            f"state={row['boundary_state']}"
+        )
+    print(f"saved={out}")
+    return output
+
+
+def main() -> None:
+    parser = argparse.ArgumentParser()
+    parser.add_argument("--scope", default="tools/data/boundary_denominator_prescan_full_20260509_1500.json")
+    parser.add_argument("--n-gaps", type=int, default=2048)
+    parser.add_argument("--min-gaps", type=int, default=64)
+    parser.add_argument("--n-shuffle", type=int, default=64)
+    parser.add_argument("--k", type=int, default=3)
+    parser.add_argument("--seed", type=int, default=20260515)
+    parser.add_argument("--out", default="tools/data/boundary_graph_curvature_gate_20260515_1855.json")
+    args = parser.parse_args()
+    run(args)
+
+
+if __name__ == "__main__":
+    main()

tokens used
106,966
Eseguito il cycle e scritto il report richiesto.

Creati:
- [tools/exp_boundary_graph_curvature_gate.py](/opt/MM_D-ND/tools/exp_boundary_graph_curvature_gate.py)
- [tools/data/boundary_graph_curvature_gate_20260515_1855.json](/opt/MM_D-ND/tools/data/boundary_graph_curvature_gate_20260515_1855.json)
- [tools/data/reports/agent_20260515_1855.md](/opt/MM_D-ND/tools/data/reports/agent_20260515_1855.md)

Risultato: `CONSTRAINT`. Il boundary 8 GUE / 5 Poisson non appare come separazione binaria pulita: nel grafo osservabile ci sono `8/27` edge cross-label e 4 righe ponte candidate. La curvatura media da sola non separa il confine; il segnale sta nella combinazione `margin + vicinato cross-label`.

Verifiche fatte: JSON valido, script compilato con `py_compile`, report letto dopo scrittura.
