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/memories]
reasoning effort: medium
reasoning summaries: none
session id: 019e8f08-4b60-7df3-b1b0-1b18805134c6
--------
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_20260603_1948.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 del Lab, poi verifico stato repo e superfici rilevanti prima di scegliere l’esperimento. Mantengo separati dati letti, inferenze e azioni.
exec
/bin/bash -lc "sed -n '1,240p' tools/data/agent_field_live.md" in /opt/MM_D-ND
 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.

Dinamica di movimento: `fisico A -> matematica -> fisico B`. Non e' una rotta prescritta e non sceglie il dominio al posto del campo. Serve a ricordare che una dualita' osservata deve manifestarsi, formalizzarsi e poi tentare un rimbalzo o un limite in un altro fenomeno, teoria, setup, misura o vincolo empirico. Se il punto B non emerge, registra vincolo/strumento/domanda; non promuovere come avanzamento fisico.

## 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.

## 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: Report giornaliero BOUNDARY Anderson focused chiuso come CONSTRAINT/NO PROMOTION. Bicono completo e falsifier coerente. Rerun fisico L=5,6,7 conferma W20 come unico local_global all-size e W16/W16.5 come zona intermedia, ma feature-scramble null p=0.887 e co-stability graph/localization null p=0.449/0.182 non passano. Misura evolutiva: tautology_risk=0.0, progress_score=0.857, verdict=evolves. Prossimo: perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata.
- Blocco L8 20260531_2024: Agent Report - Boundary Contextual Robustness Macro Audit
  - claim bloccato: `relation`: `follows_direction` ... direttiva one-shot su cache/provenance/failure audit ... null fisici interni per logistica/percolation
  - evidenza: `seme.json.direzione` dice: prossimo `perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata`. Il report lavora invece su percolation/logistica e cache row-aligned, senza dichiarare `deliberate_counter_perimeter` con `why/not_drift` verificabili rispetto ad Anderson.
  - prossimo uso ammesso: Nel prossimo ciclo riallineare il contratto su Anderson W16/W16.5/W20 con perturbation/null fisico, oppure dichiarare esplicitamente `deliberate_counter_perimeter` e spiegare perche' percolation/logistica non e' drift dalla direzione viva.
Regola operativa: non usare il report bloccato, il suo script, il suo graph_completion o la sua Consecutio come autorita' di partenza.

## Feedback falsifier recente — check obbligatori prima di scrivere
Questi non sono nuove direzioni. Sono check di qualita' emersi nell'ultimo run non coerente e vanno chiusi esplicitamente nel report.
- Run non coerente: 20260531_2024
  - L6: `Contaminazione cognitiva`: CE-none: ... nella superficie letta non e' emerso un archivio CE operativo da metabolizzare.
    Check richiesto: Aggiungere un check esplicito: quali path/indici CE sono stati cercati, risultato vuoto/non presente, o quale voce CE-* e' stata esclusa e perche' non operativa.
Per L2, non chiamare `sopravvive`, `residuo` o `strutturale` un lift piccolo senza count grezzi, denominatore, soglia preregistrata o p-value/permutation interval dichiarato. Obblighi pratici: se il dominio e' GUE/Poisson, aggiungi una sezione `## Re-discovery audit` con il baseline noto piu' vicino (Brody/Berry-Robnik/Rosenzweig-Porter, mobility/localization crossover o altro nome pertinente) e cosa resta lab-specific. Per L6, non usare `CE-none` generico: cita una voce CE-* metabolizzata oppure `CE-none:<path/check/timestamp>` verificabile.
Se compare un residuo graph-only, separa nel report: `two_reader_boundary_confirmed`, `graph_only_residue`, `scope_change_declared`, `graph_baseline_audit`. Non sommare righe graph-only al boundary a due lettori. Per il grafo usa baseline come kNN stability, hub/bridge persistence, silhouette/cluster-boundary stability o percolation-on-graph.

## Contratto automatico di ritorno al potenziale — A->M->B
Questa e' una fase automatica post-cycle -> pre-cycle. La matematica qui e' prerequisito/trasduttore: non e' la conclusione. Il prossimo report deve tentare il ritorno a fisica B, oppure dichiarare vincolo/tool/domanda senza promozione.
Autorita': `agent_20260529_0938.md` (cycle=20260529_0938, status=return_to_potential_required). I refinement supervisionati sono feedback, non authority.
Titolo sorgente: Agent Report - BOUNDARY Anderson Co-stability Falsifier
Verdict sorgente: CONSTRAINT / NO PROMOTION. Il report giornaliero puo' pubblicare un risultato metodologico interno: BOUNDARY Anderson ha prodotto progresso evolutivo e ridotto rischio tautologico, ma non evidenza fisica promuovibile. Il prossimo ciclo deve muovere il generatore fisico o il null fisico, non aggiungere un'altra metrica derivata.

Movimento da preservare:
- fisica A: Anderson 3D tight-binding focused
- matematica M: adapter local/global + latent axes + null di co-stabilita'
- fisica B corrente: vincolo: serve perturbazione/null fisico reale.

Domande B candidate:
- Esiste nel bordo Anderson W16/W16.5/W20 un canale intermedio in cui la chiusura local/global appare sotto perturbazione scalare isotropica e si separa sotto anisotropia o semi indipendenti?

Refinement supervisionati da usare come coordinate, non come promozione:
- e2e_w165_closure_confirmation_20260529.md | result=The useful result is not a promoted physics claim. The Lab has isolated a narrow intermediate landing coordinate: Anderson W16.5 closes under isotropic negative onsite tilt near -0.0625, while W20 remains the robust local_global reference. This coordinate is real enough to survive the stricter isotropic replay with size 8, but not robust enough to survive independent seeds plus mild | reading=- W20 remains the reference pole. - W16.5 is a sensitive intermediate channel. - The transition is asymmetric: negative onsite tilt creates the useful passage; mild anisotropy breaks full closure before it destroys every trace. - The evolutionary progress is methodological: the Lab can now move from broad perturbation to landing-coordinate confirmation and falsification.
- e2e_anderson_physical_perturbation_20260529.md | result=baseline: W16 = local_only W16.5 = local_only W20 = local_global anisotropic_x: W16 = neither | reading=The cycle is productive because it moves from derived-axis nulls into a real Hamiltonian perturbation/null. It strengthens the discriminator: - W20 behaves as stable closed reference under perturbation. - W16/W16.5 remain useful transition/intermediate zones. - The result remains physical_perturbation_discriminator_not_claim. This supports method progress, not physical promotion.
- e2e_w165_closure_map_20260529.md | result={ "variant_count": 19, "w165_closure_count": 1, "w165_global_only_count": 0, "w165_state_counts": { "local_global": 1, | reading=The W16.5 transition is tilt-sensitive and asymmetric: - negative tilt around -0.06 can close W16.5 cleanly; - positive tilt up to +0.10 can weaken W20 local support; - anisotropy combined with tilt did not produce a cleaner W16.5 closure in this sweep. This is a map of a sensitive intermediate channel, not a promoted physical law.

Risultante da far tornare nel potenziale:
- bicono: - **Due radici**: evidenza positiva W20 local_global stabile · contro-evidenza null graph/localization sopra soglia. - **Singolare**: W16/W16.5 sono la zona intermedia: il ponte grafico appare, ma il carico di localizzazione non stabilizza abbastanza da promuovere il claim. - **Invariante di passaggio**: la forma utile non e' il valore singolo; e' il coupling graph_reference/localization_load quando sopravvive a dominio, size e null. - **Campo di possibilità**: Possibile: costruire un perturbation/null fisico Anderson focused su W16/W16.5/W20. Non-possibile: pubblicare oggi graph/localization come ente fisico o teoria promossa.
- consecutio: Prossimo movimento: 1. costruire un perturbation/null fisico Anderson focused; 2. preservare i poli W2/W4/W24/W32; 3. agire su W16/W16.5/W20; 4. verificare se il ponte grafico entra prima e se il carico di localizzazione stabilizza dopo; 5. rieseguire boundary_evolution_measure con il nuovo null.

Feedback bloccato da metabolizzare, non da seguire come direzione: cycle=20260531_2024, reason=manual_controlled, high_lenses=['L8'].
- falsifier: Il report non e' pienamente coerente: la rottura primaria e' L8, perche' dichiara aderenza ma devia dalla direzione viva Anderson verso percolation/logistica; L4 e L6 richiedono perimetro e verifica piu' stretti.

Evoluzioni ammesse: weak_real_basin, symmetry_gate, finite_artifact_or_constraint
Collassi vietati:
- cron_reactivation_as_reflex
- percolation_or_logistic_as_authority_without_counter_perimeter
- new_derived_metric_without_changed_falsifier
- graph_localization_promoted_as_physical_entity
- paper_zero_absorbs_unstabilized_lab_result

Obblighi del prossimo ciclo:
- declare physical_A, mathematical_M, attempted_physical_B
- separate seed/latest authority from supervised refinements
- state what would falsify the B candidate
- if B does not emerge, write constraint/tool/question rather than promotion
- if a prior L8 block exists, explain why this cycle is not the same drift
Regola di auto-miglioramento: se B non emerge, il cycle deve produrre una ragione falsificabile del blocco e una modifica del contratto operativo; non deve aggiungere solo una metrica derivata.

## 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.
7. Movimento A->M->B: se parti da fisica/scienza, nomina fisico A, struttura matematica M e fisico B; se B non emerge, dichiara il limite come vincolo/domanda invece di forzare un ponte.
Se non riesci a compilare questi 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, G=8, T=7, E=4, R=4
**Generatrici/strade dense**:
- disc_5: 2 ghost · Metrica primi g=(p/2)², curvatura GUE r=0.503
- report_20260516_1230: 2 ghost · Agent Report - Graph Mechanism Ablation
- report_20260516_1148: 2 ghost · Agent Report - Prime Bridge Label Null Audit
**Forma del campo**: 9 ponti, 1 vuoto(i), 6 scoperte.
**Direzione seme da respirare**: Report giornaliero BOUNDARY Anderson focused chiuso come CONSTRAINT/NO PROMOTION. Bicono completo e falsifier coerente. Rerun fisico L=5,6,7 conferma W20 come unico local_global all-size e W16/W16.5 come zona intermedia, ma feature-scramble null p=0.887 e co-s

## Contratto di aderenza alla traiettoria
- Direzione viva del seme: Report giornaliero BOUNDARY Anderson focused chiuso come CONSTRAINT/NO PROMOTION. Bicono completo e falsifier coerente. Rerun fisico L=5,6,7 conferma W20 come unico local_global all-size e W16/W16.5 come zona intermedia, ma feature-scramble null p=0.887 e co-stability graph/localization null p=0.449/0.182 non passano. Misura evolutiva: tautology_risk=0.0, progress_score=0.857, verdict=evolves. Prossimo: perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata.
- Ultima decisione valutatore ammessa: 20260516_1230 REDESIGN/high
- Direzione operativa valutatore: Testare null fisici interni per i residui graph-only logistica_biforcazione_var_3.5699 e percolation sul perimetro fisso 8 GUE / 5 Poisson: separare dinamica fisica da ricostruzione del reader grafico
- Perche': Il ciclo ha delimitato il reader: label-count null ricostruisce spesso il 27/27 e i due residui non condividono lo stesso meccanismo grafico. La consecutio non e' continuare il confine in forma generica, ma spostare il test al nodo regressivo dichiarato: null fisici interni per logistica/percolation, mantenendo fisso il denominatore 13x27 e chiedendo se il residuo sopravvive fuori dal reader.
- Nota: Evitare nuovi domini e nuovi fit. Observable minimo: full 27/27 contro surrogate dinamici interni N-matched per logistica e percolation, con confronto esplicito ai null graph gia' prodotti.

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.


exec
/bin/bash -lc "sed -n '1,260p' tools/LAB_AGENT_CONTEXT.md" 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.
- **Combo come contenitore del movimento.** La combo non e' una lista di
  ingredienti e non e' il target del ciclo. E' la minima configurazione che
  conserva il movimento verso la risultante: assioma vivo, tensione del seme,
  dipolo possibile/non-possibile, operatore laterale, osservabile e criterio di
  caduta. Deve dire cosa muove, cosa trattiene e cosa puo' decadere. Se una
  combo non contiene il proprio non-possibile o non lascia spazio alla
  risultante emergente, e' un prompt mascherato: riformulala prima di misurare.
- **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.
- **P-value definito prima dei risultati.** Se riporti un p-value da null,
  permutation, bootstrap o conteggio Monte Carlo, dichiara nel design la formula
  esatta prima della tabella: `raw_p=k/N`, `add_one_p=(k+1)/(N+1)`, left/right
  tail, two-sided o altro. Se usi una correzione, riporta anche i count grezzi
  che la generano. Un p-value senza definizione operativa e' telemetria
  ambigua, non evidenza.
- **Null-first prima del nome candidato.** Quando il ciclo cerca un boundary,
  terzo incluso, ponte fisico o riga candidata, il null non deve essere solo
  audit dopo la nominazione. Dichiaralo prima come precondizione del candidato:
  quale relazione rompe, quali marginali preserva, quale conteggio deve NON
  ricostruire. Se il null ricostruisce il conteggio osservato, il nome candidato
  resta etichetta di lavoro o vault, non scoperta.
- **Null comparabili o non confrontare.** Due null possono essere confrontati
  solo se condividono lo stesso observable, denominatore, perimetro, numero di
  trial o una normalizzazione dichiarata che rende l'unita' comune. Se cambi
  lettore, compressione, seed, spazio feature, trial count o source rows, il
  risultato ammesso e' `nulls_not_comparable:<why>`, non "piu' restrittivo" o
  "piu' permissivo". Prima rendi comparabili i null; poi interpreta.
- **Partizioni esaustive prima dei conteggi narrativi.** Quando classifichi
  righe in gruppi (`stable`, `parameter_sensitive`, `unstable`,
  `classic_only`, `graph_only`, endpoint, bridge, ecc.), dichiara se la lista e'
  una partizione completa o un sottoinsieme. Se il testo dice "le righe X sono
  ..." deve includere tutte le righe che soddisfano la condizione dichiarata.
  Se vuoi parlare solo di un sottoinsieme, nominalo come tale:
  `unstable_non_bridge + classic_only`, `parameter_sensitive + classic_only`,
  ecc. Il totale deve tornare al denominatore atomico prima del verdict.
- **Residuo del seme quando restringi il perimetro.** Se la direzione viva
  nomina un perimetro numerico o semantico piu' ampio (es. `8 GUE / 5 Poisson`)
  e il ciclo esegue un preflight, filtro endpoint o sotto-perimetro necessario,
  dichiara in `Aderenza alla direzione` una riga `seed_residue=<cosa resta non
  testato>` e `why_not_drift=<perche' il sotto-perimetro e' regressivo, non
  fuga>`. Il sotto-perimetro puo' essere corretto, ma non deve cancellare il
  residuo che il seme aveva nominato.
- **Counter-perimeter deliberato.** Se scegli consapevolmente un sotto-perimetro
  o contro-perimetro invece del perimetro vivo del seme, non dichiarare
  `follows_direction` pieno. Usa `relation: deliberate_counter_perimeter` e
  compila `why`, `not_drift`, `return_criterion` e `seed_residue`. Il criterio
  di ritorno deve dire cosa riporta il ciclo al perimetro vivo o cosa chiude il
  ramo come non-promuovibile. Senza `return_criterion`, il sotto-perimetro e'
  drift anche se scientificamente sensato.
- **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.
- **Regola operativa non e' assioma eterno.** Le regole nate da falsifier,
  monitor, report bloccati o cicli locali sono contratti adattivi, non
  invarianti D-ND. Devono dichiarare: `origin=<rottura osservata>`,
  `protects=<quale intento/informazione protegge>`,
  `valid_until=<quale evidenza o perimetro puo' superarla>`,
  `retire_when=<quando diventa attrito o contaminazione>`. Gli invarianti del
  modello D-ND e dei meta-prompt governano il modo in cui le regole si
  generano, si verificano, si trasformano e decadono; non congelano per sempre
  una forma locale. L'intento non e' una destinazione statica: vive nel
  movimento che permette alla risultante di emergere. Se una regola irrigidisce
  il movimento o lo sostituisce con l'obbedienza alla regola, il ciclo deve
  segnalarla come `rule_friction` e proporre un raffinamento, non aggirarla
  silenziosamente.
- **Blocco come tensione autologica, non come fermo.** Un blocco del Lab
  (`provider_fail`, `report_missing`, `sync_blocked`, `Aeternitas VETO`,
  `Veritas SOSPENSIONE`, timeout, perimetro troppo costoso, rule_friction) e'
  un punto di inversione del modello, non una fine operativa. Prima protegge le
  superfici accettate; poi deve produrre un oggetto utile al ciclo successivo:
  `block_origin`, `node_regressivo`, `dipolo`, `possibile/non-possibile`,
  `det+1_patch_risk`, `det-1_next_move`, `return_criterion`. Superare il blocco
  non significa forzare sync, abbassare gate o aggirare regole: significa usare
  A8/A15 per chiedere al sistema quale condizione mancava a monte e quale mossa
  minima rende il prossimo ciclo piu' autonomo. Se il blocco resta solo log o
  quarantena, il Lab ha osservato ma non ha ancora metabolizzato.
- **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.
- **Dinamica fisico A -> matematica -> fisico B.** Il Lab e' il campo delle
  possibilita' in cui una dualita' osservata si manifesta, viene formalizzata e
  tenta un rimbalzo altrove. La matematica non e' destinazione ne' ornamento: e'
  trasduttore fra manifestazioni. Se il ciclo parte da un attrito fisico, deve
  estrarre una struttura formale e poi chiedere dove quella struttura puo'
  ri-manifestarsi, cadere o delimitare un non-possibile in un altro fenomeno,

exec
/bin/bash -lc 'ls -t shared_memory/*.md 2>/dev/null | head -10' 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

exec
/bin/bash -lc 'git status --short --branch' in /opt/MM_D-ND
 succeeded in 0ms:
## main...origin/main
 M applications/INDEX.draft.json
 M docs/guides/lab_current_state_logic_2026-05-08.md
 M papers/paper_zero.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/conoscenza_teorie.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/refresh_detector_state.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/exp_semireal_boundary_transfer_gate.py
 M tools/graph_completion_compiler.py
 M tools/lab_aeternitas.py
 M tools/lab_agent.sh
 M tools/lab_falsifier.py
 M tools/lab_session_logger.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/scoperte/20260515_1904_boundary-classical-crossover-audit_auto/
?? applications/scoperte/20260515_1933_rosenzweig-porter-physical-bridge-audit_auto/
?? applications/scoperte/20260515_1940_rp-boundary-size-stability-audit_auto/
?? applications/scoperte/20260515_1947_anderson-3d-mobility-edge-two-reader_auto/
?? applications/scoperte/20260516_0921_rp-unfolding-sensitivity-audit_auto/
?? applications/scoperte/20260516_0938_rp-candidate-local-window-stress-gate_auto/
?? applications/scoperte/20260516_1007_rp-local-window-persistence-curve_auto/
?? applications/scoperte/20260516_1019_rp-exact-local-window-size-stress_auto/
?? applications/scoperte/20260516_1031_boundary-unfolding-transfer-matrix_auto/
?? applications/scoperte/20260516_1104_endpoint-gated-rp-boundary_auto/
?? applications/scoperte/20260516_1111_endpoint-gated-rp-size-ladder_auto/
?? applications/scoperte/20260516_1117_anderson-3d-two-reader-boundary-null_auto/
?? applications/scoperte/20260516_1135_anderson-comparable-null-audit_auto/
?? applications/scoperte/20260516_1148_prime-bridge-label-null-audit_auto/
?? applications/scoperte/20260516_1206_graph-only-residue-label-null-audit_auto/
?? applications/scoperte/20260516_1230_graph-mechanism-ablation_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/
?? applications/soluzioni/20260515_1904_boundary-classical-crossover-audit/
?? applications/soluzioni/20260515_1933_rosenzweig-porter-physical-bridge-audit/
?? applications/soluzioni/20260515_1940_rp-boundary-size-stability-audit/
?? applications/soluzioni/20260515_1947_anderson-3d-mobility-edge-two-reader/
?? applications/soluzioni/20260516_0921_rp-unfolding-sensitivity-audit/
?? applications/soluzioni/20260516_0938_rp-candidate-local-window-stress-gate/
?? applications/soluzioni/20260516_1007_rp-local-window-persistence-curve/
?? applications/soluzioni/20260516_1019_rp-exact-local-window-size-stress/
?? applications/soluzioni/20260516_1031_boundary-unfolding-transfer-matrix/
?? applications/soluzioni/20260516_1104_endpoint-gated-rp-boundary/
?? applications/soluzioni/20260516_1111_endpoint-gated-rp-size-ladder/
?? applications/soluzioni/20260516_1117_anderson-3d-two-reader-boundary-null/
?? applications/soluzioni/20260516_1135_anderson-comparable-null-audit/
?? applications/soluzioni/20260516_1148_prime-bridge-label-null-audit/
?? applications/soluzioni/20260516_1206_graph-only-residue-label-null-audit/
?? applications/soluzioni/20260516_1230_graph-mechanism-ablation/
?? docs/guides/lab_preflight_agent_2026-05-14.md
?? docs/operations/
?? tools/build_lab_data.py
?? 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
?? tools/data/aeternitas/aeternitas_20260515_175045.json
?? tools/data/aeternitas/aeternitas_20260515_180306.json
?? tools/data/aeternitas/aeternitas_20260515_181257.json
?? tools/data/aeternitas/aeternitas_20260515_182126.json
?? tools/data/aeternitas/aeternitas_20260515_183111.json
?? tools/data/aeternitas/aeternitas_20260515_190118.json
?? tools/data/aeternitas/aeternitas_20260515_191018.json
?? tools/data/aeternitas/aeternitas_20260515_192915.json
?? tools/data/aeternitas/aeternitas_20260515_193919.json
?? tools/data/aeternitas/aeternitas_20260515_194625.json
?? tools/data/aeternitas/aeternitas_20260515_195317.json
?? tools/data/aeternitas/aeternitas_20260516_033848.json
?? tools/data/aeternitas/aeternitas_20260516_0720.json
?? tools/data/aeternitas/aeternitas_20260516_0820.json
?? tools/data/aeternitas/aeternitas_20260516_0921.json
?? tools/data/aeternitas/aeternitas_20260516_0938.json
?? tools/data/aeternitas/aeternitas_20260516_1007.json
?? tools/data/aeternitas/aeternitas_20260516_1019.json
?? tools/data/aeternitas/aeternitas_20260516_1031.json
?? tools/data/aeternitas/aeternitas_20260516_1045.json
?? tools/data/aeternitas/aeternitas_20260516_1058.json
?? tools/data/aeternitas/aeternitas_20260516_1104.json
?? tools/data/aeternitas/aeternitas_20260516_1111.json
?? tools/data/aeternitas/aeternitas_20260516_1117.json
?? tools/data/aeternitas/aeternitas_20260516_1124.json
?? tools/data/aeternitas/aeternitas_20260516_1135.json
?? tools/data/aeternitas/aeternitas_20260516_1140.json
?? tools/data/aeternitas/aeternitas_20260516_1148.json
?? tools/data/aeternitas/aeternitas_20260516_1206.json
?? tools/data/aeternitas/aeternitas_20260516_1230.json
?? tools/data/aeternitas/aeternitas_20260528_2028.json
?? tools/data/aeternitas/aeternitas_20260528_2042.json
?? tools/data/aeternitas/aeternitas_20260528_2138.json
?? tools/data/aeternitas/aeternitas_20260528_2222.json
?? tools/data/aeternitas/aeternitas_20260529_0938.json
?? tools/data/aeternitas/aeternitas_20260531_2024.json
?? tools/data/agent_field_entry_supervised.md
?? tools/data/anderson3d_comparable_null_audit_20260516_1135.json
?? tools/data/anderson3d_component_state_interface_input_20260514_1850.json
?? tools/data/anderson3d_endpoint_preserving_null_20260516_1124.json
?? tools/data/anderson3d_mobility_edge_two_reader_audit_20260515_1947.json
?? tools/data/anderson3d_mobility_edge_two_reader_audit_20260516_1117.json
?? tools/data/anderson3d_mobility_edge_two_reader_audit_20260529_focused.json
?? tools/data/anderson3d_physical_perturbation_20260529_anisotropic_x.json
?? tools/data/anderson3d_physical_perturbation_20260529_baseline.json
?? tools/data/anderson3d_physical_perturbation_20260529_e2e_anisotropic_x.json
?? tools/data/anderson3d_physical_perturbation_20260529_e2e_baseline.json
?? tools/data/anderson3d_physical_perturbation_20260529_e2e_tilted_disorder.json
?? tools/data/anderson3d_physical_perturbation_20260529_tilted_disorder.json
?? tools/data/aubry_binary_grammar_surrogate_gate_20260515_1807.json
?? tools/data/aubry_boundary_phase_transport_gate_20260515_1745.json
?? tools/data/aubry_cosine_boundary_counter_gate_20260515_1758.json
?? tools/data/aubry_physical_perturbation_20260529_baseline.json
?? tools/data/aubry_physical_perturbation_20260529_second_hop_neg.json
?? tools/data/aubry_physical_perturbation_20260529_second_hop_pos.json
?? tools/data/aubry_v2_generator_scaling_gate_20260515_1816.json
?? tools/data/biconi/bicono_20260512_0330.json
?? tools/data/biconi/bicono_20260513_0330.json
?? tools/data/biconi/bicono_20260514_0330.json
?? tools/data/biconi/bicono_20260514_1330.json
?? tools/data/biconi/bicono_20260514_1458.json
?? tools/data/biconi/bicono_20260514_1605.json
?? tools/data/biconi/bicono_20260514_1612.json
?? tools/data/biconi/bicono_20260514_1631.json
?? tools/data/biconi/bicono_20260514_1640.json
?? tools/data/biconi/bicono_20260514_1649.json
?? tools/data/biconi/bicono_20260514_1656.json
?? tools/data/biconi/bicono_20260514_1701.json
?? tools/data/biconi/bicono_20260514_1850.json
?? tools/data/biconi/bicono_20260515_1623.json
?? tools/data/biconi/bicono_20260515_1647.json
?? tools/data/biconi/bicono_20260515_1659.json
?? tools/data/biconi/bicono_20260515_1705.json
?? tools/data/biconi/bicono_20260515_1712.json
?? tools/data/biconi/bicono_20260515_1724.json
?? tools/data/biconi/bicono_20260515_1734.json
?? tools/data/biconi/bicono_20260515_1745.json
?? tools/data/biconi/bicono_20260515_1758.json
?? tools/data/biconi/bicono_20260515_1807.json
?? tools/data/biconi/bicono_20260515_1816.json
?? tools/data/biconi/bicono_20260515_1826.json
?? tools/data/biconi/bicono_20260515_1855.json
?? tools/data/biconi/bicono_20260515_1904.json
?? tools/data/biconi/bicono_20260515_1915.json
?? tools/data/biconi/bicono_20260515_1933.json
?? tools/data/biconi/bicono_20260515_1940.json
?? tools/data/biconi/bicono_20260515_1947.json
?? tools/data/biconi/bicono_20260516_0330.json
?? tools/data/biconi/bicono_20260516_0720.json
?? tools/data/biconi/bicono_20260516_0820.json
?? tools/data/biconi/bicono_20260516_0921.json
?? tools/data/biconi/bicono_20260516_0938.json
?? tools/data/biconi/bicono_20260516_1007.json
?? tools/data/biconi/bicono_20260516_1019.json
?? tools/data/biconi/bicono_20260516_1031.json
?? tools/data/biconi/bicono_20260516_1045.json
?? tools/data/biconi/bicono_20260516_1058.json
?? tools/data/biconi/bicono_20260516_1104.json
?? tools/data/biconi/bicono_20260516_1111.json
?? tools/data/biconi/bicono_20260516_1117.json
?? tools/data/biconi/bicono_20260516_1124.json
?? tools/data/biconi/bicono_20260516_1135.json
?? tools/data/biconi/bicono_20260516_1140.json
?? tools/data/biconi/bicono_20260516_1148.json
?? tools/data/biconi/bicono_20260516_1206.json
?? tools/data/biconi/bicono_20260516_1230.json
?? tools/data/biconi/bicono_20260528_2042.json
?? tools/data/biconi/bicono_20260528_2138.json
?? tools/data/biconi/bicono_20260528_2222.json
?? tools/data/biconi/bicono_20260529_0938.json
?? tools/data/biconi/bicono_20260531_2024.json
?? tools/data/boundary_anderson_closure_probe_20260529.json
?? tools/data/boundary_anderson_closure_probe_20260529_focused.json
?? tools/data/boundary_anderson_costability_null_20260529.json
?? tools/data/boundary_anderson_costability_null_20260529_focused.json
?? tools/data/boundary_anderson_latent_reference_probe_20260529.json
?? tools/data/boundary_anderson_latent_reference_probe_20260529_focused.json
?? tools/data/boundary_anderson_physical_perturbation_null_20260529.json
?? tools/data/boundary_anderson_physical_perturbation_null_20260529_e2e.json
?? tools/data/boundary_anderson_transaction_adapter_20260529.json
?? tools/data/boundary_anderson_transaction_adapter_20260529_focused.json
?? tools/data/boundary_aubry_physical_perturbation_null_20260529.json
?? tools/data/boundary_bridge_stability_audit_20260515_1915.json
?? tools/data/boundary_bridge_stability_audit_20260516_1140.json
?? tools/data/boundary_classical_crossover_audit_20260515_1904.json
?? tools/data/boundary_contextual_robustness_macro_audit_20260531_2024.json
?? tools/data/boundary_contextual_robustness_percolation_band_20260529_N96.jsonl
?? tools/data/boundary_contextual_robustness_percolation_ladder_20260529_N64.jsonl
?? tools/data/boundary_contextual_transaction_detector_percolation_band_20260529.json
?? tools/data/boundary_contextual_transaction_detector_percolation_ladder_20260529.json
?? tools/data/boundary_discriminator_workflow_20260529.json
?? tools/data/boundary_evolution_measure_20260529.json
?? tools/data/boundary_evolution_measure_20260529_focused.json
?? tools/data/boundary_graph_curvature_gate_20260515_1855.json
?? tools/data/boundary_graph_mechanism_ablation_20260516_1230.json
?? tools/data/boundary_graph_null_audit_20260516_0330.json
?? tools/data/boundary_graph_residue_threshold_audit_20260516_0720.json
?? tools/data/boundary_percolation_edge_trace_20260528_2138.json
?? tools/data/boundary_physical_internal_null_20260528_2042.json
?? tools/data/boundary_physical_internal_null_cache_row_aligned_20260528_2251_N8.jsonl
?? tools/data/boundary_physical_internal_null_cache_row_aligned_20260529_independent_N128.jsonl
?? tools/data/boundary_physical_internal_null_cache_row_aligned_smoke_20260528.jsonl
?? tools/data/boundary_physical_internal_null_preflight_20260528_2042.json
?? tools/data/boundary_physical_internal_null_repro_20260528_2201.json
?? tools/data/boundary_physical_internal_null_repro_20260528_2222_seed202605282042.json
?? tools/data/boundary_physical_internal_null_repro_20260528_2222_seed202605282223_N1.json
?? tools/data/boundary_physical_perturbation_evolution_measure_20260529_e2e.json
?? tools/data/boundary_prime_label_null_audit_20260516_1148.json
?? tools/data/boundary_reader_regression_audit_20260528_2138.json
?? tools/data/boundary_reference_position_probe_trial47_20260529.json
?? tools/data/boundary_residue_label_count_null_audit_20260516_1206.json
?? tools/data/boundary_rp_physical_perturbation_null_20260529.json
?? tools/data/boundary_rp_physical_perturbation_null_20260529_reps12.json
?? tools/data/boundary_tail_reference_probe_20260529.json
?? tools/data/boundary_tail_reference_probe_trial47_replay_20260529.json
?? tools/data/boundary_tail_reference_probe_trial47_replay_debug_20260529.json
?? tools/data/boundary_tail_reference_probe_trial47_replay_fixed_20260529.json
?? tools/data/boundary_transition_matrix_percolation_band_20260529.json
?? tools/data/boundary_transition_matrix_percolation_ladder_20260529.json
?? tools/data/boundary_unfolding_transfer_matrix_20260516_1031.json
?? tools/data/component_state_anderson3d_interface_20260514_1850.json
?? tools/data/component_state_anderson3d_interface_20260514_1850.trace.jsonl
?? tools/data/component_state_fit_ready_20260514_1649.json
?? tools/data/component_state_interface_smoke_20260514_1649.json
?? tools/data/component_state_interface_smoke_20260514_1649.trace.jsonl
?? tools/data/component_state_interface_smoke_input_20260514_1649.json
?? tools/data/domandatore/domandatore_20260512_0330.json
?? tools/data/domandatore/domandatore_20260512_0345.json
?? tools/data/domandatore/domandatore_20260513_0330.json
?? tools/data/domandatore/domandatore_20260513_0345.json
?? tools/data/domandatore/domandatore_20260514_0330.json
?? tools/data/domandatore/domandatore_20260514_0345.json
?? tools/data/domandatore/domandatore_20260514_1330.json
?? tools/data/domandatore/domandatore_20260514_1458.json
?? tools/data/domandatore/domandatore_20260515_0345.json
?? tools/data/domandatore/domandatore_20260515_1623.json
?? tools/data/domandatore/domandatore_20260515_1647.json
?? tools/data/domandatore/domandatore_20260515_1659.json
?? tools/data/domandatore/domandatore_20260516_0345.json
?? tools/data/domandatore/domandatore_20260517_0345.json
?? tools/data/domandatore/domandatore_20260518_0345.json
?? tools/data/domandatore/domandatore_20260519_0345.json
?? tools/data/domandatore/domandatore_20260520_0345.json
?? tools/data/domandatore/domandatore_20260521_0345.json
?? tools/data/domandatore/domandatore_20260522_0345.json
?? tools/data/domandatore/domandatore_20260523_0345.json
?? tools/data/domandatore/domandatore_20260524_0345.json
?? tools/data/domandatore/domandatore_20260525_0345.json
?? tools/data/domandatore/domandatore_20260526_0345.json
?? tools/data/domandatore/domandatore_20260526_1751.json
?? tools/data/domandatore/domandatore_20260526_1852.json
?? tools/data/domandatore/domandatore_20260526_1854.json
?? tools/data/domandatore/domandatore_20260526_1901.json
?? tools/data/domandatore/domandatore_20260526_1915.json
?? tools/data/domandatore/domandatore_20260526_1918.json
?? tools/data/domandatore/domandatore_20260526_1937.json
?? tools/data/domandatore/domandatore_20260526_1957.json
?? tools/data/domandatore/domandatore_20260527_0345.json
?? tools/data/domandatore/domandatore_20260528_0345.json
?? tools/data/domandatore/domandatore_20260528_2028.json
?? tools/data/domandatore/domandatore_20260528_2042.json
?? tools/data/domandatore/domandatore_20260528_2138.json
?? tools/data/domandatore/domandatore_20260529_0345.json
?? tools/data/domandatore/domandatore_20260530_0345.json
?? tools/data/domandatore/domandatore_20260531_0345.json
?? tools/data/domandatore/domandatore_20260531_2024.json
?? tools/data/domandatore/domandatore_20260601_0345.json
?? tools/data/domandatore/domandatore_20260602_0345.json
?? tools/data/domandatore/domandatore_20260603_0345.json
?? tools/data/domandatore/domandatore_20260603_1943.json
?? tools/data/domandatore/domandatore_20260603_1948.json
?? tools/data/endpoint_feature_scramble_null_20260516_1058.json
?? tools/data/endpoint_gated_rp_boundary_20260516_1104.json
?? tools/data/endpoint_gated_rp_size_ladder_20260516_1111.json
?? tools/data/endpoint_stability_filter_20260516_1045.json
?? tools/data/evolution/evolution_20260512_0330.md
?? tools/data/evolution/evolution_20260513_0330.md
?? tools/data/evolution/evolution_20260514_0330.md
?? tools/data/evolution/evolution_20260514_1330.md
?? tools/data/evolution/evolution_20260514_1458.md
?? tools/data/evolution/evolution_20260514_1605.md
?? tools/data/evolution/evolution_20260514_1612.md
?? tools/data/evolution/evolution_20260514_1631.md
?? tools/data/evolution/evolution_20260514_1640.md
?? tools/data/evolution/evolution_20260514_1649.md
?? tools/data/evolution/evolution_20260514_1656.md
?? tools/data/evolution/evolution_20260514_1701.md
?? tools/data/evolution/evolution_20260514_1850.md
?? tools/data/evolution/evolution_20260515_1623.md
?? tools/data/evolution/evolution_20260515_1647.md
?? tools/data/evolution/evolution_20260515_1659.md
?? tools/data/evolution/evolution_20260515_1705.md
?? tools/data/evolution/evolution_20260515_1712.md
?? tools/data/evolution/evolution_20260515_1724.md
?? tools/data/evolution/evolution_20260515_1734.md
?? tools/data/evolution/evolution_20260515_1745.md
?? tools/data/evolution/evolution_20260515_1758.md
?? tools/data/evolution/evolution_20260515_1807.md
?? tools/data/evolution/evolution_20260515_1816.md
?? tools/data/evolution/evolution_20260515_1826.md
?? tools/data/evolution/evolution_20260515_1855.md
?? tools/data/evolution/evolution_20260515_1904.md
?? tools/data/evolution/evolution_20260515_1915.md
?? tools/data/evolution/evolution_20260515_1933.md
?? tools/data/evolution/evolution_20260515_1940.md
?? tools/data/evolution/evolution_20260515_1947.md
?? tools/data/evolution/evolution_20260516_0330.md
?? tools/data/evolution/evolution_20260516_0720.md
?? tools/data/evolution/evolution_20260516_0820.md
?? tools/data/evolution/evolution_20260516_0921.md
?? tools/data/evolution/evolution_20260516_0938.md
?? tools/data/evolution/evolution_20260516_1007.md
?? tools/data/evolution/evolution_20260516_1019.md
?? tools/data/evolution/evolution_20260516_1031.md
?? tools/data/evolution/evolution_20260516_1045.md
?? tools/data/evolution/evolution_20260516_1058.md
?? tools/data/evolution/evolution_20260516_1104.md
?? tools/data/evolution/evolution_20260516_1111.md
?? tools/data/evolution/evolution_20260516_1117.md
?? tools/data/evolution/evolution_20260516_1124.md
?? tools/data/evolution/evolution_20260516_1135.md
?? tools/data/evolution/evolution_20260516_1140.md
?? tools/data/evolution/evolution_20260516_1148.md
?? tools/data/evolution/evolution_20260516_1206.md
?? tools/data/evolution/evolution_20260516_1230.md
?? tools/data/evolution/evolution_20260528_2028.md
?? tools/data/evolution/evolution_20260528_2042.md
?? tools/data/evolution/evolution_20260528_2138.md
?? tools/data/evolution/evolution_20260528_2222.md
?? tools/data/evolution/evolution_20260531_2024.md
?? tools/data/evolution/evolution_20260603_1943.md
?? tools/data/falsifier_20260529_0938.json
?? tools/data/graph_completion/graph_completion_20260512_0330.json
?? tools/data/graph_completion/graph_completion_20260513_0330.json
?? tools/data/graph_completion/graph_completion_20260514_0330.json
?? tools/data/graph_completion/graph_completion_20260514_1330.json
?? tools/data/graph_completion/graph_completion_20260514_1458.json
?? tools/data/graph_completion/graph_completion_20260514_1605.json
?? tools/data/graph_completion/graph_completion_20260514_1612.json
?? tools/data/graph_completion/graph_completion_20260514_1631.json
?? tools/data/graph_completion/graph_completion_20260514_1640.json
?? tools/data/graph_completion/graph_completion_20260514_1649.json
?? tools/data/graph_completion/graph_completion_20260514_1656.json
?? tools/data/graph_completion/graph_completion_20260514_1701.json
?? tools/data/graph_completion/graph_completion_20260514_1850.json
?? tools/data/graph_completion/graph_completion_20260515_1623.json
?? tools/data/graph_completion/graph_completion_20260515_1647.json
?? tools/data/graph_completion/graph_completion_20260515_1659.json
?? tools/data/graph_completion/graph_completion_20260515_1705.json
?? tools/data/graph_completion/graph_completion_20260515_1712.json
?? tools/data/graph_completion/graph_completion_20260515_1724.json
?? tools/data/graph_completion/graph_completion_20260515_1734.json
?? tools/data/graph_completion/graph_completion_20260515_1745.json
?? tools/data/graph_completion/graph_completion_20260515_1758.json
?? tools/data/graph_completion/graph_completion_20260515_1807.json
?? tools/data/graph_completion/graph_completion_20260515_1816.json
?? tools/data/graph_completion/graph_completion_20260515_1904.json
?? tools/data/graph_completion/graph_completion_20260515_1933.json
?? tools/data/graph_completion/graph_completion_20260515_1940.json
?? tools/data/graph_completion/graph_completion_20260515_1947.json
?? tools/data/graph_completion/graph_completion_20260516_0921.json
?? tools/data/graph_completion/graph_completion_20260516_0938.json
?? tools/data/graph_completion/graph_completion_20260516_1007.json
?? tools/data/graph_completion/graph_completion_20260516_1019.json
?? tools/data/graph_completion/graph_completion_20260516_1031.json
?? tools/data/graph_completion/graph_completion_20260516_1104.json
?? tools/data/graph_completion/graph_completion_20260516_1111.json
?? tools/data/graph_completion/graph_completion_20260516_1117.json
?? tools/data/graph_completion/graph_completion_20260516_1135.json
?? tools/data/graph_completion/graph_completion_20260516_1148.json
?? tools/data/graph_completion/graph_completion_20260516_1206.json
?? tools/data/graph_completion/graph_completion_20260516_1230.json
?? tools/data/incrocio_20260512_0330.json
?? tools/data/incrocio_20260513_0330.json
?? tools/data/incrocio_20260514_0330.json
?? tools/data/incrocio_20260514_1330.json
?? tools/data/incrocio_20260514_1458.json
?? tools/data/incrocio_20260514_1605.json
?? tools/data/incrocio_20260514_1612.json
?? tools/data/incrocio_20260514_1631.json
?? tools/data/incrocio_20260514_1640.json
?? tools/data/incrocio_20260514_1649.json
?? tools/data/incrocio_20260514_1656.json
?? tools/data/incrocio_20260514_1701.json
?? tools/data/incrocio_20260514_1850.json
?? tools/data/incrocio_20260515_1623.json
?? tools/data/incrocio_20260515_1647.json
?? tools/data/incrocio_20260515_1659.json
?? tools/data/incrocio_20260515_1705.json
?? tools/data/incrocio_20260515_1712.json
?? tools/data/incrocio_20260515_1724.json
?? tools/data/incrocio_20260515_1734.json
?? tools/data/incrocio_20260515_1745.json
?? tools/data/incrocio_20260515_1758.json
?? tools/data/incrocio_20260515_1807.json
?? tools/data/incrocio_20260515_1816.json
?? tools/data/incrocio_20260515_1826.json
?? tools/data/incrocio_20260515_1855.json
?? tools/data/incrocio_20260515_1904.json
?? tools/data/incrocio_20260515_1915.json
?? tools/data/incrocio_20260515_1933.json
?? tools/data/incrocio_20260515_1940.json
?? tools/data/incrocio_20260515_1947.json
?? tools/data/incrocio_20260516_0330.json
?? tools/data/incrocio_20260516_0720.json
?? tools/data/incrocio_20260516_0820.json
?? tools/data/incrocio_20260516_0921.json
?? tools/data/incrocio_20260516_0938.json
?? tools/data/incrocio_20260516_1007.json
?? tools/data/incrocio_20260516_1019.json
?? tools/data/incrocio_20260516_1031.json
?? tools/data/incrocio_20260516_1045.json
?? tools/data/incrocio_20260516_1058.json
?? tools/data/incrocio_20260516_1104.json
?? tools/data/incrocio_20260516_1111.json
?? tools/data/incrocio_20260516_1117.json
?? tools/data/incrocio_20260516_1124.json
?? tools/data/incrocio_20260516_1135.json
?? tools/data/incrocio_20260516_1140.json
?? tools/data/incrocio_20260516_1148.json
?? tools/data/incrocio_20260516_1206.json
?? tools/data/incrocio_20260516_1230.json
?? tools/data/incrocio_20260528_2028.json
?? tools/data/incrocio_20260528_2042.json
?? tools/data/incrocio_20260528_2138.json
?? tools/data/incrocio_20260528_2222.json
?? tools/data/incrocio_20260531_2024.json
?? tools/data/incrocio_20260603_1943.json
?? tools/data/incrocio_20260603_1948.json
?? tools/data/landing/
?? tools/data/operator_directives_consumed/operator_directive_20260514_1612.md
?? tools/data/operator_directives_consumed/operator_directive_20260514_1631.md
?? tools/data/operator_directives_consumed/operator_directive_20260514_1640.md
?? tools/data/operator_directives_consumed/operator_directive_20260514_1649.md
?? tools/data/operator_directives_consumed/operator_directive_20260514_1656.md
?? tools/data/operator_directives_consumed/operator_directive_20260514_1701.md
?? tools/data/operator_directives_consumed/operator_directive_20260514_1850.md
?? tools/data/operator_directives_consumed/operator_directive_20260528_2138.md
?? tools/data/operator_directives_consumed/operator_directive_20260528_2222.md
?? tools/data/operator_directives_consumed/operator_directive_20260531_2024.md
?? tools/data/photonic_boundary_third_included_gate_20260515_1734.json
?? tools/data/physical_sr_residue_bounce_20260514_1612.json
?? tools/data/physical_sr_residue_bounce_20260514_1612.trace.jsonl
?? tools/data/physical_sr_residue_bounce_20260514_1631_w6.json
?? tools/data/physical_sr_residue_bounce_20260514_1631_w6.trace.jsonl
?? tools/data/physical_sr_residue_bounce_20260514_1640_goe_gue_ncurve.json
?? tools/data/physical_sr_residue_bounce_20260514_1640_goe_gue_ncurve.trace.jsonl
?? tools/data/potential_return/
?? tools/data/preflight/
?? tools/data/prime_sr_persistent_boundary_20260512_0330.json
?? tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json
?? tools/data/prime_vs_mod6_sr_boundary_20260513_0330.json
?? tools/data/prime_vs_mod6_sr_boundary_20260513_0330_seedcheck.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_0330.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_0330.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_0330_seedcheck.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_0330_seedcheck.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w1024.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w2048.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w512.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1330_w512.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w4096_dense.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w8192_dense.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1458_w8192_dense.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w16384.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w16384.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w4096.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w4096.trace.jsonl
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w8192.json
?? tools/data/prime_vs_mod6_sr_boundary_20260514_1605_w8192.trace.jsonl
?? tools/data/promotions/promotion_20260513_0330.json
?? tools/data/promotions/promotion_20260514_1330.json
?? tools/data/promotions/promotion_20260514_1631.json
?? tools/data/promotions/promotion_20260514_1640.json
?? tools/data/promotions/promotion_20260514_1656.json
?? tools/data/promotions/promotion_20260515_1712.json
?? tools/data/promotions/promotion_20260515_1758.json
?? tools/data/promotions/promotion_20260515_1816.json
?? tools/data/promotions/promotion_20260515_1904.json
?? tools/data/promotions/promotion_20260515_1933.json
?? tools/data/promotions/promotion_20260515_1940.json
?? tools/data/promotions/promotion_20260515_1947.json
?? tools/data/promotions/promotion_20260516_0921.json
?? tools/data/promotions/promotion_20260516_0938.json
?? tools/data/promotions/promotion_20260516_1007.json
?? tools/data/promotions/promotion_20260516_1019.json
?? tools/data/promotions/promotion_20260516_1031.json
?? tools/data/promotions/promotion_20260516_1104.json
?? tools/data/promotions/promotion_20260516_1111.json
?? tools/data/promotions/promotion_20260516_1117.json
?? tools/data/promotions/promotion_20260516_1135.json
?? tools/data/promotions/promotion_20260516_1148.json
?? tools/data/promotions/promotion_20260516_1206.json
?? tools/data/promotions/promotion_20260516_1230.json
?? tools/data/promotions/promotion_20260528_2028.json
?? tools/data/quasiperiodic_grammar_scale_gate_20260514_1701.json
?? tools/data/quasiperiodic_vc_lattice_gate_20260515_1724.json
?? tools/data/repairs/repair_20260512_0330_decision.json
?? tools/data/repairs/repair_20260513_0330_decision.json
?? tools/data/repairs/repair_20260514_0330_decision.json
?? tools/data/repairs/repair_20260514_1330_decision.json
?? tools/data/repairs/repair_20260514_1458_decision.json
?? tools/data/repairs/repair_20260514_1605_decision.json
?? tools/data/repairs/repair_20260514_1612_decision.json
?? tools/data/repairs/repair_20260514_1631_decision.json
?? tools/data/repairs/repair_20260514_1640_decision.json
?? tools/data/repairs/repair_20260514_1649_decision.json
?? tools/data/repairs/repair_20260514_1656.json
?? tools/data/repairs/repair_20260514_1656.md
?? tools/data/repairs/repair_20260514_1656_decision.json
?? tools/data/repairs/repair_20260514_1850_decision.json
?? tools/data/reports/agent_20260512_0330.md
?? tools/data/reports/agent_20260513_0330.md
?? tools/data/reports/agent_20260514_0330.md
?? tools/data/reports/agent_20260514_1330.md
?? tools/data/reports/agent_20260514_1458.md
?? tools/data/reports/agent_20260514_1605.md
?? tools/data/reports/agent_20260514_1612.md
?? tools/data/reports/agent_20260514_1631.md
?? tools/data/reports/agent_20260514_1640.md
?? tools/data/reports/agent_20260514_1649.md
?? tools/data/reports/agent_20260514_1656.md
?? tools/data/reports/agent_20260514_1701.md
?? tools/data/reports/agent_20260514_1850.md
?? tools/data/reports/agent_20260515_1623.md
?? tools/data/reports/agent_20260515_1647.md
?? tools/data/reports/agent_20260515_1659.md
?? tools/data/reports/agent_20260515_1705.md
?? tools/data/reports/agent_20260515_1712.md
?? tools/data/reports/agent_20260515_1724.md
?? tools/data/reports/agent_20260515_1734.md
?? tools/data/reports/agent_20260515_1745.md
?? tools/data/reports/agent_20260515_1758.md
?? tools/data/reports/agent_20260515_1807.md
?? tools/data/reports/agent_20260515_1816.md
?? tools/data/reports/agent_20260515_1826.md
?? tools/data/reports/agent_20260515_1855.md
?? tools/data/reports/agent_20260515_1904.md
?? tools/data/reports/agent_20260515_1915.md
?? tools/data/reports/agent_20260515_1933.md
?? tools/data/reports/agent_20260515_1940.md
?? tools/data/reports/agent_20260515_1947.md
?? tools/data/reports/agent_20260516_0330.md
?? tools/data/reports/agent_20260516_0720.md
?? tools/data/reports/agent_20260516_0820.md
?? tools/data/reports/agent_20260516_0921.md
?? tools/data/reports/agent_20260516_0938.md
?? tools/data/reports/agent_20260516_1007.md
?? tools/data/reports/agent_20260516_1019.md
?? tools/data/reports/agent_20260516_1031.md
?? tools/data/reports/agent_20260516_1045.md
?? tools/data/reports/agent_20260516_1058.md
?? tools/data/reports/agent_20260516_1104.md
?? tools/data/reports/agent_20260516_1111.md
?? tools/data/reports/agent_20260516_1117.md
?? tools/data/reports/agent_20260516_1124.md
?? tools/data/reports/agent_20260516_1135.md
?? tools/data/reports/agent_20260516_1140.md
?? tools/data/reports/agent_20260516_1148.md
?? tools/data/reports/agent_20260516_1206.md
?? tools/data/reports/agent_20260516_1230.md
?? tools/data/reports/agent_20260528_2042.md
?? tools/data/reports/agent_20260528_2138.md
?? tools/data/reports/agent_20260528_2222.md
?? tools/data/reports/agent_20260529_0938.md
?? tools/data/reports/agent_20260531_2024.md
?? tools/data/reports/ddf_20260512_0405.json
?? tools/data/reports/ddf_20260513_0405.json
?? tools/data/reports/ddf_20260514_0405.json
?? tools/data/reports/ddf_20260515_0405.json
?? tools/data/reports/ddf_20260516_0405.json
?? tools/data/reports/ddf_20260517_0405.json
?? tools/data/reports/ddf_20260518_0405.json
?? tools/data/reports/ddf_20260519_0405.json
?? tools/data/reports/ddf_20260520_0405.json
?? tools/data/reports/ddf_20260521_0405.json
?? tools/data/reports/ddf_20260522_0405.json
?? tools/data/reports/ddf_20260523_0405.json
?? tools/data/reports/ddf_20260524_0405.json
?? tools/data/reports/ddf_20260525_0405.json
?? tools/data/reports/ddf_20260526_0405.json
?? tools/data/reports/ddf_20260527_0405.json
?? tools/data/reports/ddf_20260528_0405.json
?? tools/data/reports/ddf_20260529_0405.json
?? tools/data/reports/ddf_20260530_0405.json
?? tools/data/reports/ddf_20260531_0405.json
?? tools/data/reports/ddf_20260601_0405.json
?? tools/data/reports/ddf_20260602_0405.json
?? tools/data/reports/ddf_20260603_0405.json
?? tools/data/reports/e2e_anderson_physical_perturbation_20260529.md
?? tools/data/reports/e2e_landing_loop_anderson_physical_perturbation_20260529.md
?? tools/data/reports/e2e_w165_closure_confirmation_20260529.md
?? tools/data/reports/e2e_w165_closure_map_20260529.md
?? tools/data/reports/falsifier_20260512_0330.json
?? tools/data/reports/falsifier_20260513_0330.json
?? tools/data/reports/falsifier_20260514_0330.json
?? tools/data/reports/falsifier_20260514_1330.json
?? tools/data/reports/falsifier_20260514_1458.json
?? tools/data/reports/falsifier_20260514_1605.json
?? tools/data/reports/falsifier_20260514_1612.json
?? tools/data/reports/falsifier_20260514_1631.json
?? tools/data/reports/falsifier_20260514_1640.json
?? tools/data/reports/falsifier_20260514_1649.json
?? tools/data/reports/falsifier_20260514_1656.json
?? tools/data/reports/falsifier_20260514_1701.json
?? tools/data/reports/falsifier_20260514_1850.json
?? tools/data/reports/falsifier_20260515_1623.json
?? tools/data/reports/falsifier_20260515_1647.json
?? tools/data/reports/falsifier_20260515_1659.json
?? tools/data/reports/falsifier_20260515_1705.json
?? tools/data/reports/falsifier_20260515_1712.json
?? tools/data/reports/falsifier_20260515_1712.raw.txt
?? tools/data/reports/falsifier_20260515_1724.json
?? tools/data/reports/falsifier_20260515_1734.json
?? tools/data/reports/falsifier_20260515_1745.json
?? tools/data/reports/falsifier_20260515_1758.json
?? tools/data/reports/falsifier_20260515_1807.json
?? tools/data/reports/falsifier_20260515_1816.json
?? tools/data/reports/falsifier_20260515_1826.json
?? tools/data/reports/falsifier_20260515_1855.json
?? tools/data/reports/falsifier_20260515_1904.json
?? tools/data/reports/falsifier_20260515_1915.json
?? tools/data/reports/falsifier_20260515_1933.json
?? tools/data/reports/falsifier_20260515_1940.json
?? tools/data/reports/falsifier_20260515_1947.json
?? tools/data/reports/falsifier_20260516_0330.json
?? tools/data/reports/falsifier_20260516_0720.json
?? tools/data/reports/falsifier_20260516_0820.json
?? tools/data/reports/falsifier_20260516_0921.json
?? tools/data/reports/falsifier_20260516_0921.raw.txt
?? tools/data/reports/falsifier_20260516_0938.json
?? tools/data/reports/falsifier_20260516_1007.json
?? tools/data/reports/falsifier_20260516_1019.json
?? tools/data/reports/falsifier_20260516_1031.json
?? tools/data/reports/falsifier_20260516_1045.json
?? tools/data/reports/falsifier_20260516_1058.json
?? tools/data/reports/falsifier_20260516_1104.json
?? tools/data/reports/falsifier_20260516_1111.json
?? tools/data/reports/falsifier_20260516_1117.json
?? tools/data/reports/falsifier_20260516_1124.json
?? tools/data/reports/falsifier_20260516_1135.json
?? tools/data/reports/falsifier_20260516_1140.json
?? tools/data/reports/falsifier_20260516_1148.json
?? tools/data/reports/falsifier_20260516_1206.json
?? tools/data/reports/falsifier_20260516_1230.json
?? tools/data/reports/falsifier_20260528_2042.json
?? tools/data/reports/falsifier_20260528_2138.json
?? tools/data/reports/falsifier_20260528_2222.json
?? tools/data/reports/falsifier_20260529_0938.json
?? tools/data/reports/falsifier_20260531_2024.json
?? tools/data/reports/incident_20260528_2028.md
?? tools/data/reports/incident_20260603_1943.md
?? tools/data/reports/loop_guard_20260512_0330.json
?? tools/data/reports/loop_guard_20260513_0330.json
?? tools/data/reports/loop_guard_20260514_0330.json
?? tools/data/reports/loop_guard_20260514_1330.json
?? tools/data/reports/loop_guard_20260514_1458.json
?? tools/data/reports/loop_guard_20260514_1605.json
?? tools/data/reports/loop_guard_20260514_1612.json
?? tools/data/reports/loop_guard_20260514_1631.json
?? tools/data/reports/loop_guard_20260514_1640.json
?? tools/data/reports/loop_guard_20260514_1649.json
?? tools/data/reports/loop_guard_20260514_1656.json
?? tools/data/reports/loop_guard_20260514_1701.json
?? tools/data/reports/loop_guard_20260514_1850.json
?? tools/data/reports/loop_guard_20260515_1623.json
?? tools/data/reports/loop_guard_20260515_1647.json
?? tools/data/reports/loop_guard_20260515_1659.json
?? tools/data/reports/loop_guard_20260515_1705.json
?? tools/data/reports/loop_guard_20260515_1712.json
?? tools/data/reports/loop_guard_20260515_1724.json
?? tools/data/reports/loop_guard_20260515_1734.json
?? tools/data/reports/loop_guard_20260515_1745.json
?? tools/data/reports/loop_guard_20260515_1758.json
?? tools/data/reports/loop_guard_20260515_1807.json
?? tools/data/reports/loop_guard_20260515_1816.json
?? tools/data/reports/loop_guard_20260515_1826.json
?? tools/data/reports/loop_guard_20260515_1855.json
?? tools/data/reports/loop_guard_20260515_1904.json
?? tools/data/reports/loop_guard_20260515_1915.json
?? tools/data/reports/loop_guard_20260515_1933.json
?? tools/data/reports/loop_guard_20260515_1940.json
?? tools/data/reports/loop_guard_20260515_1947.json
?? tools/data/reports/loop_guard_20260516_0330.json
?? tools/data/reports/loop_guard_20260516_0720.json
?? tools/data/reports/loop_guard_20260516_0820.json
?? tools/data/reports/loop_guard_20260516_0921.json
?? tools/data/reports/loop_guard_20260516_0938.json
?? tools/data/reports/loop_guard_20260516_1007.json
?? tools/data/reports/loop_guard_20260516_1019.json
?? tools/data/reports/loop_guard_20260516_1031.json
?? tools/data/reports/loop_guard_20260516_1045.json
?? tools/data/reports/loop_guard_20260516_1058.json
?? tools/data/reports/loop_guard_20260516_1104.json
?? tools/data/reports/loop_guard_20260516_1111.json
?? tools/data/reports/loop_guard_20260516_1117.json
?? tools/data/reports/loop_guard_20260516_1124.json
?? tools/data/reports/loop_guard_20260516_1135.json
?? tools/data/reports/loop_guard_20260516_1140.json
?? tools/data/reports/loop_guard_20260516_1148.json
?? tools/data/reports/loop_guard_20260516_1206.json
?? tools/data/reports/loop_guard_20260516_1230.json
?? tools/data/reports/loop_guard_20260528_2028.json
?? tools/data/reports/loop_guard_20260528_2042.json
?? tools/data/reports/loop_guard_20260528_2138.json
?? tools/data/reports/loop_guard_20260528_2222.json
?? tools/data/reports/loop_guard_20260531_2024.json
?? tools/data/reports/loop_guard_20260603_1943.json
?? tools/data/reports/quarantine_manifest.json
?? tools/data/restore_backups/
?? tools/data/rosenzweig_porter_bridge_physical_audit_20260515_1933.json
?? tools/data/rp_boundary_raw_count_null_audit_20260516_0820.json
?? tools/data/rp_boundary_size_stability_audit_20260515_1940.json
?? tools/data/rp_candidate_window_stress_20260516_0938_w11.json
?? tools/data/rp_candidate_window_stress_20260516_0938_w5.json
?? tools/data/rp_candidate_window_stress_20260516_1007_w7.json
?? tools/data/rp_candidate_window_stress_20260516_1007_w9.json
?? tools/data/rp_exact_local_window_matrix_20260516_1019.json
?? tools/data/rp_exact_local_window_matrix_20260516_1019_w10.json
?? tools/data/rp_exact_local_window_matrix_20260516_1019_w11.json
?? tools/data/rp_exact_local_window_matrix_20260516_1019_w12.json
?? tools/data/rp_exact_local_window_matrix_20260516_1019_w9.json
?? tools/data/rp_physical_perturbation_20260529_baseline.json
?? tools/data/rp_physical_perturbation_20260529_diagonal_heavy.json
?? tools/data/rp_physical_perturbation_20260529_gue_heavy.json
?? tools/data/rp_physical_perturbation_20260529_reps12_baseline.json
?? tools/data/rp_physical_perturbation_20260529_reps12_diagonal_heavy.json
?? tools/data/rp_physical_perturbation_20260529_reps12_gue_heavy.json
?? tools/data/rp_unfolding_sensitivity_audit_20260516_0921.json
?? tools/data/seme_archive/piano_136.json
?? tools/data/seme_backup_b2_20260512_033557.json
?? tools/data/seme_backup_b2_20260513_033622.json
?? tools/data/seme_backup_b2_20260514_150530.json
?? tools/data/seme_backup_b2_20260514_161119.json
?? tools/data/seme_backup_b2_20260515_180327.json
?? tools/data/seme_backup_b2_20260515_194643.json
?? tools/data/seme_backup_b2_20260516_094447.json
?? tools/data/seme_backup_b2_20260516_101425.json
?? tools/data/seme_backup_b2_20260516_102450.json
?? tools/data/seme_backup_b2_20260516_120521.json
?? tools/data/seme_backup_b2_20260516_122021.json
?? tools/data/seme_backup_b2_20260516_123925.json
?? tools/data/seme_backup_tm7_cache_n8_20260528_2258.json
?? tools/data/seme_backup_tm7_cache_row_aligned_20260528_2245.json
?? tools/data/seme_backup_tm7_reader_provenance_20260528_2225.json
?? tools/data/seme_backup_tm7_reader_redesign_20260528_213736.json
?? tools/data/sturmian_denominator_alignment_gate_20260515_1826.json
?? tools/data/tool_contracts/
?? tools/data/veritas/veritas_20260512_033539.json
?? tools/data/veritas/veritas_20260513_033605.json
?? tools/data/veritas/veritas_20260514_033420.json
?? tools/data/veritas/veritas_20260514_133424.json
?? tools/data/veritas/veritas_20260514_150454.json
?? tools/data/veritas/veritas_20260514_161058.json
?? tools/data/veritas/veritas_20260514_161719.json
?? tools/data/veritas/veritas_20260514_163527.json
?? tools/data/veritas/veritas_20260514_164509.json
?? tools/data/veritas/veritas_20260514_165437.json
?? tools/data/veritas/veritas_20260514_170109.json
?? tools/data/veritas/veritas_20260514_171152.json
?? tools/data/veritas/veritas_20260514_185450.json
?? tools/data/veritas/veritas_20260515_162727.json
?? tools/data/veritas/veritas_20260515_165116.json
?? tools/data/veritas/veritas_20260515_170328.json
?? tools/data/veritas/veritas_20260515_171005.json
?? tools/data/veritas/veritas_20260515_171725.json
?? tools/data/veritas/veritas_20260515_172913.json
?? tools/data/veritas/veritas_20260515_174023.json
?? tools/data/veritas/veritas_20260515_175045.json
?? tools/data/veritas/veritas_20260515_180306.json
?? tools/data/veritas/veritas_20260515_181257.json
?? tools/data/veritas/veritas_20260515_182126.json
?? tools/data/veritas/veritas_20260515_183111.json
?? tools/data/veritas/veritas_20260515_190118.json
?? tools/data/veritas/veritas_20260515_191018.json
?? tools/data/veritas/veritas_20260515_192915.json
?? tools/data/veritas/veritas_20260515_193919.json
?? tools/data/veritas/veritas_20260515_194625.json
?? tools/data/veritas/veritas_20260515_195317.json
?? tools/data/veritas/veritas_20260516_033848.json
?? tools/data/veritas/veritas_20260516_072533.json
?? tools/data/veritas/veritas_20260516_082608.json
?? tools/data/veritas/veritas_20260516_092735.json
?? tools/data/veritas/veritas_20260516_094423.json
?? tools/data/veritas/veritas_20260516_101403.json
?? tools/data/veritas/veritas_20260516_102427.json
?? tools/data/veritas/veritas_20260516_103737.json
?? tools/data/veritas/veritas_20260516_105525.json
?? tools/data/veritas/veritas_20260516_110354.json
?? tools/data/veritas/veritas_20260516_111042.json
?? tools/data/veritas/veritas_20260516_111633.json
?? tools/data/veritas/veritas_20260516_112343.json
?? tools/data/veritas/veritas_20260516_113001.json
?? tools/data/veritas/veritas_20260516_113946.json
?? tools/data/veritas/veritas_20260516_114656.json
?? tools/data/veritas/veritas_20260516_120457.json
?? tools/data/veritas/veritas_20260516_122002.json
?? tools/data/veritas/veritas_20260516_123900.json
?? tools/data/veritas/veritas_20260528_202855.json
?? tools/data/veritas/veritas_20260528_210258.json
?? tools/data/veritas/veritas_20260528_214307.json
?? tools/data/veritas/veritas_20260528_223400.json
?? tools/data/veritas/veritas_20260529_094016.json
?? tools/data/veritas/veritas_20260529_094421.json
?? tools/data/veritas/veritas_20260531_202929.json
?? tools/exp_anderson3d_comparable_null_audit.py
?? tools/exp_anderson3d_endpoint_preserving_null.py
?? tools/exp_anderson3d_mobility_edge_two_reader_audit.py
?? tools/exp_aubry_binary_grammar_surrogate_gate.py
?? tools/exp_aubry_boundary_phase_transport_gate.py
?? tools/exp_aubry_cosine_boundary_counter_gate.py
?? tools/exp_aubry_v2_generator_scaling_gate.py
?? tools/exp_boundary_anderson_closure_probe.py
?? tools/exp_boundary_anderson_costability_null.py
?? tools/exp_boundary_anderson_latent_reference_probe.py
?? tools/exp_boundary_anderson_physical_perturbation_null.py
?? tools/exp_boundary_anderson_transaction_adapter.py
?? tools/exp_boundary_anderson_w165_closure_map.py
?? tools/exp_boundary_aubry_physical_perturbation_null.py
?? tools/exp_boundary_bridge_stability_audit.py
?? tools/exp_boundary_classical_crossover_audit.py
?? tools/exp_boundary_contextual_robustness_macro_audit.py
?? tools/exp_boundary_contextual_transaction_detector.py
?? tools/exp_boundary_discriminator_workflow.py
?? tools/exp_boundary_evolution_measure.py
?? tools/exp_boundary_graph_curvature_gate.py
?? tools/exp_boundary_graph_mechanism_ablation.py
?? tools/exp_boundary_graph_null_audit.py
?? tools/exp_boundary_graph_residue_threshold_audit.py
?? tools/exp_boundary_percolation_edge_trace.py
?? tools/exp_boundary_physical_internal_null.py
?? tools/exp_boundary_physical_internal_null_cache_row_aligned.py
?? tools/exp_boundary_physical_internal_null_preflight.py
?? tools/exp_boundary_physical_perturbation_evolution_measure.py
?? tools/exp_boundary_physical_perturbation_landing_loop.py
?? tools/exp_boundary_prime_label_null_audit.py
?? tools/exp_boundary_reader_regression_audit.py
?? tools/exp_boundary_reference_position_probe.py
?? tools/exp_boundary_residue_label_count_null_audit.py
?? tools/exp_boundary_rp_physical_perturbation_null.py
?? tools/exp_boundary_tail_reference_probe.py
?? tools/exp_boundary_transition_matrix.py
?? tools/exp_boundary_unfolding_transfer_matrix.py
?? tools/exp_endpoint_feature_scramble_null.py
?? tools/exp_endpoint_gated_rp_boundary.py
?? tools/exp_endpoint_stability_filter.py
?? tools/exp_photonic_boundary_third_included_gate.py
?? tools/exp_physical_sr_residue_bounce.py
?? tools/exp_prime_sr_persistent_boundary.py
?? tools/exp_prime_vs_mod6_sr_boundary.py
?? tools/exp_quasiperiodic_grammar_scale_gate.py
?? tools/exp_rosenzweig_porter_bridge_physical_audit.py
?? tools/exp_rp_boundary_raw_count_null_audit.py
?? tools/exp_rp_boundary_size_stability_audit.py
?? tools/exp_rp_exact_local_window_matrix.py
?? tools/exp_rp_unfolding_sensitivity_audit.py
?? tools/exp_sturmian_denominator_alignment_gate.py
?? tools/field_coherence_preflight.py
?? tools/field_rebuild_risk_map.py
?? tools/lab_cycle_monitor.py
?? tools/lab_potential_return_compiler.py
?? tools/lab_preflight_agent.py
?? tools/lab_runtime_observer.py
?? tools/lab_surface_invariant_check.py
?? tools/lab_tool_contract.py
?? tools/prime_mod6_counter_null_audit.py
?? tools/prime_mod6_generative_null_audit.py
?? tools/prime_mod6_null_fairness_audit.py
?? tools/prime_mod6_pipeline_closeout.py
?? tools/selector_authority_matrix.py
?? tools/stale_field_source_map.py
?? tools/test_potential_return_e2e.py

codex
Il campo vivo è allineato su Anderson: W20 come riferimento local_global, W16/W16.5 come zona intermedia, e richiesta esplicita di perturbation/null fisico, non nuova metrica derivata. Ora controllo se esiste una direttiva one-shot e quali script Anderson già disponibili possono eseguire il test senza introdurre un nuovo strato.
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 "sed -n '241,520p' tools/data/agent_field_live.md" in /opt/MM_D-ND
 succeeded in 0ms:
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:

- 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.

exec
/bin/bash -lc "sed -n '1,220p' shared_memory/README.md" in /opt/MM_D-ND
 succeeded in 0ms:
# shared_memory — Cross-agent rules e cristalli

> Cartella condivisa tra agenti che operano in `/opt/MM_D-ND/`:
> - **TM3-claude** (Claude Code, sessioni interattive con operatore)
> - **codex-lab** (Codex CLI, cycle agent notturno + run manuali)
> - **eventuali altri** (TM5, TM7, futuri cycle)
>
> Contiene regole permanenti, cristalli operativi, scoperte rilevanti che valgono
> per più di un agente. **Non** memoria operativa locale (quella resta in
> `~/.claude/projects/.../memory/` per TM3, in `~/.codex_lab/memories/` per codex).

## Pattern di scrittura

Ogni file:
- Filename: `<tipo>_<topic>_<data>.md` (es. `feedback_cycletest_2026-05-07.md`,
  `cristallo_gate_transferability_2026-05-07.md`)
- Frontmatter:
  ```yaml
  ---
  type: feedback | cristallo | regola | finding-cross-agent
  author: TM3 | codex-lab | TM7 | operatore
  date: YYYY-MM-DD
  scope: cross-agent | mm-dnd-only | lab-cycle-only
  ---
  ```
- Body: conciso. Se è regola → "Why" + "How to apply". Se è cristallo → contesto +
  insight + how it changes work.

## Pattern di lettura

- **TM3 (claude code)**: al boot di sessione su `/opt/MM_D-ND/`, leggi
  `MM_D-ND/.claude/CLAUDE.md` che adesso punta qui (sezione *Cross-agent rules*).
  Scansiona `ls -t shared_memory/*.md | head -10` (le più recenti) e integra in
  contesto.
- **codex-lab**: `/opt/MM_D-ND/AGENTS.md` punta qui. Codex legge AGENTS.md ad
  ogni cycle, AGENTS.md istruisce di leggere shared_memory.
- **Cleanup**: file > 90 giorni e non rilevanti vanno archiviati o rimossi
  (lo fa TM3 quando la cartella supera 50 file).

## Direzione bidirezionale

- TM3 → codex: TM3 scrive feedback/cristalli da sessioni operatore qui →
  codex li vede al cycle dopo via AGENTS.md.
- codex → TM3: codex durante un cycle scopre/cristallizza qualcosa di
  cross-agent → scrive qui → TM3 li vede al boot di sessione successiva.

Il flusso non sostituisce le memorie locali — *integra* per ciò che serve a tutti.

## Anti-pattern

- Duplicare qui regole che valgono SOLO per TM3 (vanno in
  `/root/.claude/projects/.../memory/`)
- Duplicare qui regole che valgono SOLO per codex-lab cycle (vanno in
  `/root/.codex_lab/memories/`)
- Scrivere note di lavoro temporanee (vanno nel campo vivo, non qui)

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' 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 "env | grep -E 'ANTHROPIC_API_KEY|OPENAI_API_KEY' || true" in /opt/MM_D-ND
 succeeded in 0ms:
codex
Non c’è direttiva one-shot attiva e non risultano API key pagate nell’ambiente. Il worktree è molto sporco già prima del mio intervento: per questo terrò le modifiche limitate al nuovo report e a eventuali output sperimentali nuovi con timestamp 20260603_1948.
exec
/bin/bash -lc "sed -n '1,260p' tools/exp_boundary_anderson_physical_perturbation_null.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
Closed-combo Anderson physical perturbation/null for the BOUNDARY transaction.

This is a physical-generator test, not another derived coordinate. It reruns
the Anderson Hamiltonian under small perturbations that change hopping geometry
or onsite disorder tilt, then observes only the final local/global transaction
states on W16/W16.5/W20 with W2/W4/W24/W32 kept as poles.
"""

from __future__ import annotations

import argparse
import json
from collections import Counter
from pathlib import Path
from types import SimpleNamespace
from typing import Any

from exp_anderson3d_mobility_edge_two_reader_audit import run as run_anderson


def parse_variant(text: str) -> dict[str, Any]:
    parts = text.split(":")
    if len(parts) != 4:
        raise ValueError("variant format: name:hx,hy,hz:tilt:seed_offset")
    return {
        "name": parts[0],
        "hopping": parts[1],
        "onsite_tilt": float(parts[2]),
        "seed_offset": int(parts[3]),
    }


def transaction_state(row: dict[str, Any], min_graph: float) -> str:
    local = float(row.get("min_graph_bridge_frequency", 0.0)) >= min_graph
    global_ = set(row.get("classical_states_seen", [])) == {"classical_intermediate"}
    if local and global_:
        return "local_global"
    if local:
        return "local_only"
    if global_:
        return "global_only"
    return "neither"


def summarize_variant(name: str, audit: dict[str, Any], min_graph: float) -> dict[str, Any]:
    rows = audit.get("cross_size_rows", [])
    projected = []
    counts: Counter[str] = Counter()
    for row in rows:
        state = transaction_state(row, min_graph)
        counts[state] += 1
        projected.append(
            {
                "domain_window": row.get("domain_window"),
                "disorder_W": row.get("disorder_W"),
                "transaction_state": state,
                "two_reader_all_sizes": row.get("two_reader_all_sizes"),
                "two_reader_intermittent": row.get("two_reader_intermittent"),
                "min_graph_bridge_frequency": row.get("min_graph_bridge_frequency"),
                "classical_states_seen": row.get("classical_states_seen"),
                "size_states": row.get("size_states"),
            }
        )
    focus = {
        row["domain_window"]: row
        for row in projected
        if row["domain_window"] in {"Anderson3D_W_16.00", "Anderson3D_W_16.50", "Anderson3D_W_20.00"}
    }
    poles = {
        row["domain_window"]: row
        for row in projected
        if row["domain_window"] in {
            "Anderson3D_W_2.00",
            "Anderson3D_W_4.00",
            "Anderson3D_W_24.00",
            "Anderson3D_W_32.00",
        }
    }
    return {
        "name": name,
        "states": dict(sorted(counts.items())),
        "summary": audit.get("summary", {}),
        "focus": focus,
        "poles": poles,
        "reading": {
            "w20_state": focus.get("Anderson3D_W_20.00", {}).get("transaction_state"),
            "w16_state": focus.get("Anderson3D_W_16.00", {}).get("transaction_state"),
            "w16_5_state": focus.get("Anderson3D_W_16.50", {}).get("transaction_state"),
            "w20_local_global": focus.get("Anderson3D_W_20.00", {}).get("transaction_state") == "local_global",
            "intermediate_closed_count": sum(
                1
                for key in ("Anderson3D_W_16.00", "Anderson3D_W_16.50")
                if focus.get(key, {}).get("transaction_state") == "local_global"
            ),
        },
    }


def anderson_args(args: argparse.Namespace, variant: dict[str, Any], out_path: Path) -> SimpleNamespace:
    seeds = [int(x.strip()) + variant["seed_offset"] for x in args.seeds.split(",") if x.strip()]
    return SimpleNamespace(
        out=str(out_path),
        sizes=args.sizes,
        reps=args.reps,
        disorders=args.disorders,
        seeds=",".join(str(seed) for seed in seeds),
        k_values=args.k_values,
        central_fraction=args.central_fraction,
        grid_size=args.grid_size,
        metallic_pole_max=args.metallic_pole_max,
        localized_pole_min=args.localized_pole_min,
        graph_margin_max=args.graph_margin_max,
        scramble_trials=args.scramble_trials,
        scramble_seed=args.scramble_seed + variant["seed_offset"],
        hopping=variant["hopping"],
        onsite_tilt=variant["onsite_tilt"],
    )


def run(args: argparse.Namespace) -> dict[str, Any]:
    variants = [parse_variant(item) for item in args.variants.split(";") if item.strip()]
    out_dir = Path(args.out).parent
    out_dir.mkdir(parents=True, exist_ok=True)
    variant_outputs = {}
    for variant in variants:
        audit_path = out_dir / f"anderson3d_physical_perturbation_{args.label}_{variant['name']}.json"
        audit = run_anderson(anderson_args(args, variant, audit_path))
        variant_outputs[variant["name"]] = {
            "contract": {
                "hopping": variant["hopping"],
                "onsite_tilt": variant["onsite_tilt"],
                "seed_offset": variant["seed_offset"],
                "audit_path": str(audit_path),
            },
            **summarize_variant(variant["name"], audit, args.min_graph_bridge_frequency),
        }

    base = variant_outputs.get("baseline", {})
    comparisons = {}
    for name, data in variant_outputs.items():
        if name == "baseline":
            continue
        comparisons[name] = {
            "w20_preserved": data["reading"]["w20_local_global"],
            "intermediate_delta_vs_baseline": (
                data["reading"]["intermediate_closed_count"]
                - base.get("reading", {}).get("intermediate_closed_count", 0)
            ),
            "state_triplet": {
                "W16": data["reading"]["w16_state"],
                "W16.5": data["reading"]["w16_5_state"],
                "W20": data["reading"]["w20_state"],
            },
        }

    output = {
        "experiment": "boundary_anderson_physical_perturbation_null",
        "question": "Does the Anderson BOUNDARY transaction survive physical-generator perturbations without becoming a rigid theory constraint?",
        "boundary": "physical perturbation/null only; no promotion; Anderson remains a discriminator",
        "state_contract": {
            "local": f"min_graph_bridge_frequency >= {args.min_graph_bridge_frequency}",
            "global": "classical_states_seen == ['classical_intermediate']",
            "focus": "W16/W16.5/W20",
            "poles": "W2/W4/W24/W32",
        },
        "parameters": {
            "sizes": args.sizes,
            "reps": args.reps,
            "disorders": args.disorders,
            "seeds": args.seeds,
            "k_values": args.k_values,
            "variants": variants,
        },
        "variants": variant_outputs,
        "comparisons": comparisons,
        "interpretation": {
            "status": "physical_perturbation_discriminator_not_claim",
            "reading": (
                "A useful perturbation preserves W20 as the closed reference while showing whether "
                "W16/W16.5 close, split, or remain intermittent under a real Hamiltonian change."
            ),
        },
    }
    out = Path(args.out)
    out.write_text(json.dumps(output, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
    print(f"wrote={out}")
    print(json.dumps({"comparisons": comparisons, "interpretation": output["interpretation"]}, indent=2, sort_keys=True))
    return output


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--out", default="tools/data/boundary_anderson_physical_perturbation_null_20260529.json")
    parser.add_argument("--label", default="20260529")
    parser.add_argument("--sizes", default="5,6,7")
    parser.add_argument("--reps", type=int, default=4)
    parser.add_argument("--disorders", default="2,4,16,16.5,20,24,32")
    parser.add_argument("--seeds", default="2026052901,2026052902")
    parser.add_argument("--k-values", default="2,3,4")
    parser.add_argument("--central-fraction", type=float, default=0.45)
    parser.add_argument("--grid-size", type=int, default=151)
    parser.add_argument("--metallic-pole-max", type=float, default=4.0)
    parser.add_argument("--localized-pole-min", type=float, default=24.0)
    parser.add_argument("--graph-margin-max", type=float, default=0.45)
    parser.add_argument("--scramble-trials", type=int, default=128)
    parser.add_argument("--scramble-seed", type=int, default=202605290501)
    parser.add_argument("--min-graph-bridge-frequency", type=float, default=0.75)
    parser.add_argument(
        "--variants",
        default="baseline:1,1,1:0:0;anisotropic_x:1.08,0.96,0.96:0:1000;tilted_disorder:1,1,1:0.04:2000",
        help="semicolon-separated name:hx,hy,hz:onsite_tilt:seed_offset",
    )
    run(parser.parse_args())


if __name__ == "__main__":
    main()

exec
/bin/bash -lc "sed -n '1,260p' tools/exp_boundary_anderson_w165_closure_map.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
Focused W16.5 closure map for the Anderson BOUNDARY landing loop.

The previous landing loop showed that W20 remains the robust local_global
reference, while W16.5 can close sporadically under stronger physical
perturbations. This tool maps that closing condition instead of adding another
broad metric.
"""

from __future__ import annotations

import argparse
import json
from collections import Counter
from pathlib import Path
from types import SimpleNamespace
from typing import Any

from exp_anderson3d_mobility_edge_two_reader_audit import run as run_anderson


def transaction_state(row: dict[str, Any], min_graph: float) -> str:
    local = float(row.get("min_graph_bridge_frequency", 0.0)) >= min_graph
    global_ = set(row.get("classical_states_seen", [])) == {"classical_intermediate"}
    if local and global_:
        return "local_global"
    if local:
        return "local_only"
    if global_:
        return "global_only"
    return "neither"


def anderson_args(args: argparse.Namespace, variant: dict[str, Any], out_path: Path) -> SimpleNamespace:
    seeds = [int(x.strip()) + int(variant["seed_offset"]) for x in args.seeds.split(",") if x.strip()]
    return SimpleNamespace(
        out=str(out_path),
        sizes=args.sizes,
        reps=args.reps,
        disorders=args.disorders,
        seeds=",".join(str(seed) for seed in seeds),
        k_values=args.k_values,
        central_fraction=args.central_fraction,
        grid_size=args.grid_size,
        metallic_pole_max=args.metallic_pole_max,
        localized_pole_min=args.localized_pole_min,
        graph_margin_max=args.graph_margin_max,
        scramble_trials=args.scramble_trials,
        scramble_seed=args.scramble_seed + int(variant["seed_offset"]),
        hopping=variant["hopping"],
        onsite_tilt=float(variant["onsite_tilt"]),
    )


def find_row(audit: dict[str, Any], window: str) -> dict[str, Any]:
    for row in audit.get("cross_size_rows", []):
        if row.get("domain_window") == window:
            return row
    return {}


def variant_grid(args: argparse.Namespace) -> list[dict[str, Any]]:
    tilts = [float(x.strip()) for x in args.tilts.split(",") if x.strip()]
    variants: list[dict[str, Any]] = []
    offset = 0
    variants.append({"name": "baseline", "hopping": "1,1,1", "onsite_tilt": 0.0, "seed_offset": offset})
    for tilt in tilts:
        offset += 1000
        variants.append({"name": f"tilt_{tilt:+.3f}", "hopping": "1,1,1", "onsite_tilt": tilt, "seed_offset": offset})
    for tilt in tilts:
        offset += 1000
        variants.append({"name": f"anis_x_tilt_{tilt:+.3f}", "hopping": args.anisotropic_hopping, "onsite_tilt": tilt, "seed_offset": offset})
    return variants


def run(args: argparse.Namespace) -> dict[str, Any]:
    out = Path(args.out)
    out.parent.mkdir(parents=True, exist_ok=True)
    audit_dir = out.parent / f"{out.stem}_audits"
    audit_dir.mkdir(parents=True, exist_ok=True)
    variants = variant_grid(args)
    rows = []
    closure_counter: Counter[str] = Counter()

    for variant in variants:
        safe_name = variant["name"].replace("+", "p").replace("-", "m").replace(".", "_")
        audit_path = audit_dir / f"anderson_w165_closure_{safe_name}.json"
        audit = run_anderson(anderson_args(args, variant, audit_path))
        w16 = find_row(audit, "Anderson3D_W_16.00")
        w165 = find_row(audit, "Anderson3D_W_16.50")
        w20 = find_row(audit, "Anderson3D_W_20.00")
        w16_state = transaction_state(w16, args.min_graph_bridge_frequency) if w16 else "missing"
        w165_state = transaction_state(w165, args.min_graph_bridge_frequency) if w165 else "missing"
        w20_state = transaction_state(w20, args.min_graph_bridge_frequency) if w20 else "missing"
        closure_counter[w165_state] += 1
        rows.append({
            "name": variant["name"],
            "hopping": variant["hopping"],
            "onsite_tilt": variant["onsite_tilt"],
            "audit_path": str(audit_path),
            "W16": {
                "state": w16_state,
                "min_graph_bridge_frequency": w16.get("min_graph_bridge_frequency"),
                "classical_states_seen": w16.get("classical_states_seen"),
                "size_states": w16.get("size_states"),
            },
            "W16.5": {
                "state": w165_state,
                "min_graph_bridge_frequency": w165.get("min_graph_bridge_frequency"),
                "classical_states_seen": w165.get("classical_states_seen"),
                "size_states": w165.get("size_states"),
            },
            "W20": {
                "state": w20_state,
                "min_graph_bridge_frequency": w20.get("min_graph_bridge_frequency"),
                "classical_states_seen": w20.get("classical_states_seen"),
                "size_states": w20.get("size_states"),
            },
            "w20_preserved": w20_state == "local_global",
            "w165_closed": w165_state == "local_global",
            "w165_global_only": w165_state == "global_only",
        })

    w20_preservation = sum(1 for row in rows if row["w20_preserved"]) / len(rows)
    w165_closures = [row for row in rows if row["w165_closed"]]
    w165_global_only = [row for row in rows if row["w165_global_only"]]
    output = {
        "experiment": "boundary_anderson_w165_closure_map",
        "question": "Under which physical perturbations does W16.5 close while W20 remains the robust reference?",
        "parameters": {
            "sizes": args.sizes,
            "reps": args.reps,
            "disorders": args.disorders,
            "seeds": args.seeds,
            "k_values": args.k_values,
            "tilts": args.tilts,
            "anisotropic_hopping": args.anisotropic_hopping,
            "min_graph_bridge_frequency": args.min_graph_bridge_frequency,
        },
        "rows": rows,
        "summary": {
            "variant_count": len(rows),
            "w20_preservation_ratio": round(w20_preservation, 9),
            "w165_state_counts": dict(sorted(closure_counter.items())),
            "w165_closure_count": len(w165_closures),
            "w165_global_only_count": len(w165_global_only),
            "w165_closure_variants": [
                {
                    "name": row["name"],
                    "hopping": row["hopping"],
                    "onsite_tilt": row["onsite_tilt"],
                    "W16.5": row["W16.5"],
                }
                for row in w165_closures
            ],
            "w165_global_only_variants": [
                {
                    "name": row["name"],
                    "hopping": row["hopping"],
                    "onsite_tilt": row["onsite_tilt"],
                    "W16.5": row["W16.5"],
                }
                for row in w165_global_only
            ],
        },
        "interpretation": {
            "status": "w165_closure_map_not_claim",
            "reading": "W16.5 closure is treated as a sensitive intermediate channel, not promotion, unless it persists across perturbation families and sizes.",
        },
        "boundary": "no physics-law promotion; map only",
    }
    out.write_text(json.dumps(output, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
    print(f"wrote={out}")
    print(json.dumps(output["summary"], ensure_ascii=False, indent=2, sort_keys=True))
    return output


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--out", default="tools/data/landing/boundary_anderson_w165_closure_map_20260529.json")
    parser.add_argument("--sizes", default="5,6,7")
    parser.add_argument("--reps", type=int, default=4)
    parser.add_argument("--disorders", default="2,4,16,16.5,20,24,32")
    parser.add_argument("--seeds", default="2026052901,2026052902")
    parser.add_argument("--k-values", default="2,3,4")
    parser.add_argument("--tilts", default="-0.10,-0.08,-0.06,-0.04,0,0.04,0.06,0.08,0.10")
    parser.add_argument("--anisotropic-hopping", default="1.10,0.95,0.95")
    parser.add_argument("--central-fraction", type=float, default=0.45)
    parser.add_argument("--grid-size", type=int, default=151)
    parser.add_argument("--metallic-pole-max", type=float, default=4.0)
    parser.add_argument("--localized-pole-min", type=float, default=24.0)
    parser.add_argument("--graph-margin-max", type=float, default=0.45)
    parser.add_argument("--scramble-trials", type=int, default=96)
    parser.add_argument("--scramble-seed", type=int, default=202605292001)
    parser.add_argument("--min-graph-bridge-frequency", type=float, default=0.75)
    run(parser.parse_args())


if __name__ == "__main__":
    main()

exec
/bin/bash -lc "sed -n '1,240p' tools/exp_boundary_physical_perturbation_landing_loop.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
Bounded landing loop for BOUNDARY physical perturbation/null.

The loop regenerates stronger physical perturbation contracts until the
discriminator lands, or until the configured budget is consumed. "Landing" here
means stable discriminator progress: W20 preserved, W16/W16.5 not promoted,
poles preserved. It is explicitly not a physics-law promotion.
"""

from __future__ import annotations

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


ROUND_PRESETS = [
    {
        "name": "r1_default",
        "reps": 4,
        "sizes": "5,6,7",
        "scramble_trials": 128,
        "variants": "baseline:1,1,1:0:0;anisotropic_x:1.08,0.96,0.96:0:1000;tilted_disorder:1,1,1:0.04:2000",
    },
    {
        "name": "r2_stronger",
        "reps": 6,
        "sizes": "5,6,7",
        "scramble_trials": 160,
        "variants": "baseline:1,1,1:0:0;anisotropic_x_strong:1.14,0.93,0.93:0:3000;tilted_disorder_strong:1,1,1:0.08:4000;mixed_shift:1.08,0.96,0.96:0.04:5000",
    },
    {
        "name": "r3_wider",
        "reps": 6,
        "sizes": "5,6,7,8",
        "scramble_trials": 192,
        "variants": "baseline:1,1,1:0:0;anisotropic_y_strong:0.93,1.14,0.93:0:6000;tilted_negative:1,1,1:-0.08:7000;mixed_opposed:1.10,0.95,0.95:-0.04:8000",
    },
]


def run_cmd(cmd: list[str], cwd: Path) -> str:
    proc = subprocess.run(cmd, cwd=cwd, text=True, capture_output=True)
    if proc.returncode != 0:
        raise RuntimeError(
            f"command failed {proc.returncode}: {' '.join(cmd)}\nSTDOUT:\n{proc.stdout}\nSTDERR:\n{proc.stderr}"
        )
    return proc.stdout


def load_json(path: Path) -> dict[str, Any]:
    return json.loads(path.read_text(encoding="utf-8"))


def run(args: argparse.Namespace) -> dict[str, Any]:
    root = Path(args.root).resolve()
    out_dir = root / "tools" / "data" / "landing"
    out_dir.mkdir(parents=True, exist_ok=True)
    rounds = ROUND_PRESETS[: args.max_rounds]
    results = []
    landed_once = False
    landing_round = None

    for idx, preset in enumerate(rounds, start=1):
        label = f"{args.label}_{preset['name']}"
        perturbation_out = out_dir / f"boundary_anderson_physical_perturbation_null_{label}.json"
        measure_out = out_dir / f"boundary_physical_perturbation_evolution_measure_{label}.json"

        perturbation_cmd = [
            sys.executable,
            "tools/exp_boundary_anderson_physical_perturbation_null.py",
            "--label",
            label,
            "--out",
            str(perturbation_out.relative_to(root)),
            "--reps",
            str(preset["reps"]),
            "--sizes",
            preset["sizes"],
            "--scramble-trials",
            str(preset["scramble_trials"]),
            "--variants",
            preset["variants"],
        ]
        measure_cmd = [
            sys.executable,
            "tools/exp_boundary_physical_perturbation_evolution_measure.py",
            "--perturbation",
            str(perturbation_out.relative_to(root)),
            "--out",
            str(measure_out.relative_to(root)),
            "--min-score",
            str(args.min_score),
        ]
        run_cmd(perturbation_cmd, root)
        run_cmd(measure_cmd, root)
        measure = load_json(measure_out)
        perturbation = load_json(perturbation_out)
        result = {
            "round": idx,
            "name": preset["name"],
            "perturbation_artifact": str(perturbation_out),
            "measure_artifact": str(measure_out),
            "measure": {
                "evolutionary_verdict": measure.get("evolutionary_verdict"),
                "progress_score": measure.get("progress_score"),
                "preservation_ratio": measure.get("preservation_ratio"),
                "intermediate_promotion_ratio": measure.get("intermediate_promotion_ratio"),
                "poles_ok": measure.get("poles_ok"),
            },
            "state_triplets": {
                name: {
                    "W16": data.get("reading", {}).get("w16_state"),
                    "W16.5": data.get("reading", {}).get("w16_5_state"),
                    "W20": data.get("reading", {}).get("w20_state"),
                }
                for name, data in perturbation.get("variants", {}).items()
            },
        }
        results.append(result)
        if measure.get("evolutionary_verdict") == "evolves_discriminator":
            landed_once = True
            landing_round = idx
            if args.stop_on_land:
                break

    sustained_landing = bool(results) and all(
        item.get("measure", {}).get("evolutionary_verdict") == "evolves_discriminator"
        for item in results
    )
    landing_lost_round = None
    if landed_once and not sustained_landing:
        for item in results:
            if item.get("measure", {}).get("evolutionary_verdict") != "evolves_discriminator":
                landing_lost_round = item.get("round")
                break

    output = {
        "experiment": "boundary_physical_perturbation_landing_loop",
        "label": args.label,
        "landing_definition": "W20 preserved as local_global, W16/W16.5 not promoted, poles preserved; discriminator only, no physics-law promotion.",
        "landed_once": landed_once,
        "sustained_landing": sustained_landing,
        "landing_round": landing_round,
        "landing_lost_round": landing_lost_round,
        "rounds_run": len(results),
        "results": results,
        "boundary": "bounded autopoietic regeneration; no cron, no public sync, no physical promotion",
    }
    out = Path(args.out)
    out.parent.mkdir(parents=True, exist_ok=True)
    out.write_text(json.dumps(output, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
    print(f"wrote={out}")
    print(json.dumps({
        "landed_once": landed_once,
        "sustained_landing": sustained_landing,
        "landing_round": landing_round,
        "landing_lost_round": landing_lost_round,
        "rounds_run": len(results),
        "last_measure": results[-1]["measure"] if results else {},
    }, indent=2, sort_keys=True))
    return output


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--root", default=".")
    parser.add_argument("--label", default="20260529_landing")
    parser.add_argument("--out", default="tools/data/landing/boundary_physical_perturbation_landing_loop_20260529.json")
    parser.add_argument("--max-rounds", type=int, default=3)
    parser.add_argument("--min-score", type=float, default=0.9)
    parser.add_argument("--stop-on-land", action="store_true")
    run(parser.parse_args())


if __name__ == "__main__":
    main()

exec
/bin/bash -lc "sed -n '1,220p' tools/data/reports/agent_20260529_0938.md" in /opt/MM_D-ND
 succeeded in 0ms:
# Agent Report - BOUNDARY Anderson Co-stability Falsifier
**Date**: 2026-05-29 09:38 UTC
**Tension explored**: BOUNDARY / transaction reference / Anderson independent verifier
**verdict**: CONSTRAINT - La forma local/global trasferisce da percolation ad Anderson 3D, ma il candidato `graph_reference/localization_load` non passa ancora un null relazionale abbastanza forte. Il risultato utile e' evolutivo e anti-tautologico, non promozionale: W20 resta il riferimento local_global piu' stabile, W16/W16.5 restano zona intermedia intermittente.
observables_registry: Anderson audit derived from existing two-reader contract plus focused physical rerun
observables_used: [graph_bridge_frequency, centroid_margin, cross_neighbor_fraction, adjacent_r, brody_q, wigner_poisson_like_weight, mean_ipr, participation_entropy, graph_reference, localization_load, costability_score]
ssp_value: no

**observable_contract**: claim=il riferimento Anderson candidato non deve copiare `max/q90` della percolation; observable=stati local/global, `graph_reference`, `localization_load`, null di co-stabilita'; operator=rerun fisico Anderson 3D focused su L=5,6,7 con nuovi seed e poli metallici/localizzati; denominator=7 W rows x 3 sizes x 2 seeds x k={2,3,4}; p_value_definition=add-one p da null che preserva marginali per size e rompe coupling graph/localization; non_possible=promuovere graph/localization come ente fisico se il coupling-breaking null non passa p<=0.05; not_tested=grandi L, boundary conditions alternative, perturbazione Hamiltoniana reale, sparse large-scale scaling.

## Source directive
L'operatore ha chiesto di procedere finche' non emergono evidenze e di fare cio' che il Lab dovrebbe fare, arrivando al report giornaliero. La regola attiva era: verificare tautologia e progresso come misura evolutiva; non copiare la coordinata percolation dentro Anderson; cercare eventuali enti relazionali nascosti solo se sostenuti da falsificazione.

## Respiro fuori-tempo
- **Combo**: BOUNDARY + percolation dominance reference + Anderson mobility-edge flow + misura tautologia/progresso.
- **Dipolo / punto-zero**: `local_global` stabile / zona intermittente. Punto-zero: W16/W16.5 quando una size entra e l'altra non chiude.
- **Piano superiore**: la transazione non e' un valore singolo, ma una relazione che deve sopravvivere a un secondo dominio fisico e a un null che rompe il coupling.
- **Contaminazione cognitiva**: CE-none verificabile: questo ciclo non usa archivio enzimi esplicito; metabolizza invece la direttiva operatore "tautologia + progresso" come misura JSON separata.
- **Proto-ipotesi**: in Anderson il riferimento candidato e' bifasico: `graph_reference` come ingresso/ponte, `localization_load` come stabilizzazione attraverso scala.
- **Possibile/non-possibile**: possibile = usare graph/localization come candidato da falsificare fisicamente; non-possibile = promuoverlo oggi come ente fisico o nuova teoria.
- **Movimento A->M->B**: fisico A = Anderson 3D tight-binding focused; matematica M = adapter local/global + latent axes + null di co-stabilita'; fisico B = vincolo: serve perturbazione/null fisico reale.

## Aderenza alla direzione
- `relation`: `follows_direction`
- `why`: il ciclo non accumula altra descrizione; applica misura tautologica/progresso e un rerun fisico indipendente.
- `not_drift`: non promuove TQGE+R, non copia `max/q90`, non pubblica claim; separa evidenza evolutiva da promozione fisica.
- `public_residue`: `lab_data.json` puo' esporre una direzione pubblica/pre-gate diversa dal seme attivo; qui non viene usato come autorita' L8 primaria. Il report segue il seme corrente BOUNDARY Anderson e tratta il residuo GUE/Poisson come memoria di perimetro, non come drift.
- `seed_residue`: il rerun focused e' ancora piccolo; serve null fisico o perturbazione reale per chiudere.
- `return_criterion`: rientro promozionale solo se il candidato passa un falsificatore fisico indipendente, non solo derived-axis null.

## Claim Under Test
Il candidato Anderson `graph_reference/localization_load` riduce il rischio tautologico e produce progresso evolutivo, ma non e' ancora evidenza promuovibile finche' non supera un null fisico o una perturbazione reale.

## Experiment Design
Sono stati usati due livelli:

1. **Rerun fisico focused Anderson 3D**
   - script: `tools/exp_anderson3d_mobility_edge_two_reader_audit.py`
   - output: `tools/data/anderson3d_mobility_edge_two_reader_audit_20260529_focused.json`
   - sizes: `5,6,7`
   - reps: `6`
   - disorders: `2,4,16,16.5,20,24,32`
   - seeds: `2026052901,2026052902`
   - k-values: `2,3,4`
   - scramble trials: `256`

2. **Projection and falsification**
   - adapter local/global: `tools/data/boundary_anderson_transaction_adapter_20260529_focused.json`
   - latent axes: `tools/data/boundary_anderson_latent_reference_probe_20260529_focused.json`
   - closure sensitivity: `tools/data/boundary_anderson_closure_probe_20260529_focused.json`
   - co-stability null: `tools/data/boundary_anderson_costability_null_20260529_focused.json`
   - evolution measure: `tools/data/boundary_evolution_measure_20260529_focused.json`

## Results
Focused Anderson rerun:

```json
{
  "two_reader_all_size_rows": ["Anderson3D_W_20.00"],
  "two_reader_intermittent_rows": ["Anderson3D_W_16.00", "Anderson3D_W_16.50"],
  "feature_scramble_null_add_one_p": 0.887159533
}
```

Transaction adapter:

```json
{
  "local_global": 1,
  "local_only": 2,
  "global_only": 3,
  "neither": 1
}
```

Latent deltas:

```json
{
  "graph_reference": 7.72090454,
  "localization_load": 0.120944471,
  "spectral_softening": 0.100759857,
  "adjacent_midpoint_score": 0.19394125
}
```

Closure probe:

```json
{
  "graph_reference": 40.626221285,
  "localization_load": 0.828564315,
  "spectral_softening": 0.589033146,
  "adjacent_midpoint_score": 0.800275
}
```

Co-stability null:

```json
{
  "observed_all_row_separation": 0.2833333333333333,
  "observed_focus_separation": 0.28009259259259256,
  "null_all_row_add_one_p": 0.449841347,
  "null_focus_add_one_p": 0.182084452,
  "passes_relation_null": false
}
```

Evolution measure:

```json
{
  "tautology_risk": 0.0,
  "progress_score": 0.857142857,
  "evolutionary_verdict": "evolves",
  "strongest_delta": "graph_reference"
}
```

## Falsificazione
Il ciclo falsifica la promozione forte:

- il rerun fisico ripete la topologia grossolana W20 / W16-W16.5;
- ma il feature-scramble null del rerun e' alto (`add_one_p=0.887159533`);
- il null relazionale graph/localization non passa (`focus p=0.182084452`);
- quindi la co-stabilita' resta candidato, non evidenza.

Il ciclo non falsifica il progresso:

- Anderson e' un dominio fisico indipendente;
- non copia `max/q90`;
- produce una nuova coordinata candidata;
- espone un contro-perimetro chiaro;
- aggiorna la misura evolutiva senza pubblicare.

## Tautology / Progress
- `tautology_risk=0.0`: non c'e' copia della coordinata percolation e il contro-perimetro e' esplicito.
- `progress_score=0.857142857`: il sistema evolve perche' trasferisce forma, crea strumento, misura il progresso e produce un falsificatore.
- Limite: il progresso non e' scoperta fisica; e' progresso del Lab verso un falsificatore migliore.

## Bicono della scoperta
- **Due radici**: evidenza positiva W20 local_global stabile · contro-evidenza null graph/localization sopra soglia.
- **Singolare**: W16/W16.5 sono la zona intermedia: il ponte grafico appare, ma il carico di localizzazione non stabilizza abbastanza da promuovere il claim.
- **Invariante di passaggio**: la forma utile non e' il valore singolo; e' il coupling graph_reference/localization_load quando sopravvive a dominio, size e null.
- **Campo di possibilità**: Possibile: costruire un perturbation/null fisico Anderson focused su W16/W16.5/W20. Non-possibile: pubblicare oggi graph/localization come ente fisico o teoria promossa.

## Verdict
CONSTRAINT / NO PROMOTION.

Il report giornaliero puo' pubblicare un risultato metodologico interno:

```text
BOUNDARY Anderson ha prodotto progresso evolutivo e ridotto rischio tautologico,
ma non evidenza fisica promuovibile.
```

Il prossimo ciclo deve muovere il generatore fisico o il null fisico, non aggiungere un'altra metrica derivata.

## Consecutio
Prossimo movimento:

1. costruire un perturbation/null fisico Anderson focused;
2. preservare i poli W2/W4/W24/W32;
3. agire su W16/W16.5/W20;
4. verificare se il ponte grafico entra prima e se il carico di localizzazione stabilizza dopo;
5. rieseguire `boundary_evolution_measure` con il nuovo null.

## Telemetria
- Nessun public sync.
- Nessuna riattivazione cron.
- Nessuna promozione fisica.
- Nuovo report locale: `tools/data/reports/agent_20260529_0938.md`.
- Nuovo rerun fisico: `tools/data/anderson3d_mobility_edge_two_reader_audit_20260529_focused.json`.
- Nuovi derivati focused: adapter, latent, closure, costability null, evolution measure.

exec
/bin/bash -lc "sed -n '1,220p' tools/data/reports/e2e_w165_closure_confirmation_20260529.md" in /opt/MM_D-ND
 succeeded in 0ms:
# E2E W16.5 Closure Confirmation

**Date**: 2026-05-29  
**Scope**: Anderson BOUNDARY physical perturbation landing loop  
**Status**: CONSTRAINT / NO PROMOTION

## Question

Does the intermediate Anderson window `W=16.5` close as a real landing
coordinate, or only as a transient artifact of the first perturbation loop?

## Runs

### R1 - narrow isotropic replay

Artifact:
`tools/data/landing/boundary_anderson_w165_closure_confirm_20260529_r1.json`

- variants: 15
- sizes: 5,6,7
- W16.5 closures: 2
- closure coordinates: `onsite_tilt=-0.065`, `onsite_tilt=-0.060`
- W20 preservation: 1.0

Reading: the first closure map did not collapse. The closure is concentrated
near a negative onsite tilt band.

### R2 - stricter isotropic confirmation

Artifact:
`tools/data/landing/boundary_anderson_w165_closure_confirm_20260529_r2.json`

- variants: 15
- sizes: 5,6,7,8
- reps: 10
- scramble trials: 160
- W16.5 closures: 1
- closure coordinate: `onsite_tilt=-0.0625`
- W20 preservation: 1.0

Reading: adding size 8 and stronger null pressure does not remove the closure,
but narrows it to a precise isotropic coordinate.

### R3 - independent seeds plus mild anisotropy

Artifact:
`tools/data/landing/boundary_anderson_w165_closure_confirm_20260529_r3.json`

- variants: 11
- sizes: 5,6,7,8
- base seeds: `2026052911,2026052912,2026052913`
- anisotropic hopping: `1.04,0.98,0.98`
- W16.5 closures: 0
- W16.5 global-only: 1 at `onsite_tilt=-0.066`, anisotropic family
- W20 preservation: 0.909090909

Reading: the full local/global closure does not survive this seed/family
change. A global-only residue remains in the same negative tilt neighborhood,
and W20 loses one case under anisotropic stress.

## Result

The useful result is not a promoted physics claim.

The Lab has isolated a narrow intermediate landing coordinate:

```text
Anderson W16.5 closes under isotropic negative onsite tilt near -0.0625,
while W20 remains the robust local_global reference.
```

This coordinate is real enough to survive the stricter isotropic replay with
size 8, but not robust enough to survive independent seeds plus mild
anisotropy as a full family.

## Interpretation

- `W20` remains the reference pole.
- `W16.5` is a sensitive intermediate channel.
- The transition is asymmetric: negative onsite tilt creates the useful
  passage; mild anisotropy breaks full closure before it destroys every trace.
- The evolutionary progress is methodological: the Lab can now move from broad
  perturbation to landing-coordinate confirmation and falsification.

## Boundary

No law promotion. No public discovery claim.

This is a verifier result:

- candidate: narrow isotropic landing coordinate;
- evidence: repeated local/global closure under stricter isotropic replay;
- falsifier: independent seed/family stress prevents promotion;
- next useful test: map the basin around `-0.0625` with controlled seed families
  and a separate anisotropy axis, then decide whether the coordinate is a
  stable basin or only a gate crossing.

## Verification

`python3 tools/lab_surface_invariant_check.py`

Result:

```text
lab_surface_invariant_check: PASS
failures: []
warnings: []
```

codex
Gli script già presenti coprono esattamente il contratto richiesto: perturbazione fisica Anderson e mappa di chiusura W16.5. Scelgo una mossa regressiva stretta: testare il bacino negativo attorno a `-0.0625` con semi indipendenti e asse anisotropico separato, perché è il residuo dichiarato dal risultato E2E e resta dentro W16/W16.5/W20.
exec
/bin/bash -lc "sed -n '1,280p' tools/exp_anderson3d_mobility_edge_two_reader_audit.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
Two-reader BOUNDARY audit on a 3D Anderson tight-binding flow.

The live direction asks whether the Rosenzweig-Porter two-reader gate transfers
to a second physical row-aligned flow.  Each disorder value W is one row; the
classical reader uses spacing/Brody/Wigner-Poisson diagnostics and the graph
reader asks whether the same W row sits between metallic and localized poles
under kNN perturbations.
"""

from __future__ import annotations

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

import numpy as np

from observables_registry import OBSERVABLES_CANONICAL, OBSERVABLES_REGISTRY_VERSION, SR_local_rigidity
from exp_rosenzweig_porter_bridge_physical_audit import (
    brody_pdf,
    empirical_ks,
    fit_brody_q,
    fit_mixture_weight,
    gue_wigner_cdf,
    normalize_spacings,
    parse_floats,
    parse_ints,
    poisson_cdf,
)


OBS_NAMES = list(OBSERVABLES_CANONICAL.keys())
FEATURE_NAMES = OBS_NAMES + [
    "SR_local_rigidity",
    "brody_q",
    "wigner_poisson_like_weight",
    "mean_ipr",
    "participation_entropy",
]


def median(values: list[float]) -> float:
    return float(np.median(np.asarray(values, dtype=float)))


def central_slice(n: int, fraction: float) -> slice:
    keep = max(8, min(n, int(round(n * fraction))))
    start = (n - keep) // 2
    return slice(start, start + keep)


def anderson_hamiltonian(
    l_size: int,
    disorder: float,
    rng: np.random.Generator,
    hopping: tuple[float, float, float] = (1.0, 1.0, 1.0),
    onsite_tilt: float = 0.0,
) -> np.ndarray:
    n = l_size**3
    onsite = rng.uniform(-disorder / 2.0, disorder / 2.0, n)
    if onsite_tilt:
        coords = np.linspace(-0.5, 0.5, l_size)
        tilt = np.zeros(n, dtype=float)
        for x in range(l_size):
            for y in range(l_size):
                for z in range(l_size):
                    tilt[(x * l_size + y) * l_size + z] = coords[x] + coords[y] + coords[z]
        onsite = onsite + onsite_tilt * disorder * tilt
    h = np.diag(onsite)

    def idx(x: int, y: int, z: int) -> int:
        return (x * l_size + y) * l_size + z

    for x in range(l_size):
        for y in range(l_size):
            for z in range(l_size):
                i = idx(x, y, z)
                for axis, (dx, dy, dz) in enumerate(((1, 0, 0), (0, 1, 0), (0, 0, 1))):
                    j = idx((x + dx) % l_size, (y + dy) % l_size, (z + dz) % l_size)
                    h[i, j] = hopping[axis]
                    h[j, i] = hopping[axis]
    return h


def row_spacings_and_ipr(
    disorder: float,
    l_size: int,
    reps: int,
    central_fraction: float,
    seed: int,
    hopping: tuple[float, float, float] = (1.0, 1.0, 1.0),
    onsite_tilt: float = 0.0,
) -> tuple[np.ndarray, float, float]:
    rng = np.random.default_rng(seed)
    spacings: list[float] = []
    iprs: list[float] = []
    entropy_values: list[float] = []
    n_sites = l_size**3
    for _ in range(reps):
        h = anderson_hamiltonian(l_size, disorder, rng, hopping=hopping, onsite_tilt=onsite_tilt)
        levels, vectors = np.linalg.eigh(h)
        central = levels[central_slice(len(levels), central_fraction)]
        gaps = np.diff(np.sort(central))
        gaps = gaps[np.isfinite(gaps) & (gaps > 1e-12)]
        spacings.extend(gaps.tolist())

        subset = vectors[:, central_slice(vectors.shape[1], central_fraction)]
        probs = np.square(np.abs(subset))
        ipr = np.sum(probs * probs, axis=0)
        iprs.extend(ipr.tolist())
        for col in range(probs.shape[1]):
            p = probs[:, col]
            p = p[p > 1e-15]
            entropy_values.append(float(-np.sum(p * np.log(p)) / math.log(n_sites)))

    if not spacings:
        raise ValueError(f"W={disorder} produced no spacings")
    return (
        np.asarray(spacings, dtype=float),
        float(np.mean(iprs)) if iprs else 0.0,
        float(np.mean(entropy_values)) if entropy_values else 0.0,
    )


def source_type(disorder: float, metallic_max: float, localized_min: float) -> str:
    if disorder <= metallic_max:
        return "metallic_wigner_pole"
    if disorder >= localized_min:
        return "localized_poisson_pole"
    return "mobility_candidate"


def adjacent_ratio(spacings: np.ndarray) -> float:
    gaps = np.asarray(spacings, dtype=float)
    if len(gaps) < 2:
        return 0.0
    left = gaps[:-1]
    right = gaps[1:]
    return float(np.mean(np.minimum(left, right) / np.maximum(left, right)))


def compute_row(disorder: float, args: argparse.Namespace, seed: int) -> dict[str, Any]:
    gaps, mean_ipr, participation_entropy = row_spacings_and_ipr(
        disorder,
        args.l_size,
        args.reps,
        args.central_fraction,
        seed,
        tuple(parse_floats(getattr(args, "hopping", "1,1,1"))),
        float(getattr(args, "onsite_tilt", 0.0)),
    )
    s = normalize_spacings(gaps)
    obs = {name: float(fn(s)) for name, fn in OBSERVABLES_CANONICAL.items()}
    obs["SR_local_rigidity"] = float(SR_local_rigidity(s))
    brody_q, brody_nll = fit_brody_q(s, args.grid_size)
    mixture_w, mixture_ks = fit_mixture_weight(s, args.grid_size)
    return {
        "domain_window": f"Anderson3D_W_{disorder:.2f}",
        "disorder_W": round(disorder, 6),
        "source_domain_type": source_type(disorder, args.metallic_pole_max, args.localized_pole_min),
        "n_spacings": int(len(s)),
        "adjacent_r": round(adjacent_ratio(s), 9),
        "mean_ipr": round(mean_ipr, 9),
        "participation_entropy": round(participation_entropy, 9),
        "observables": {key: round(value, 9) for key, value in obs.items()},
        "brody_q": round(brody_q, 6),
        "brody_nll": round(brody_nll, 6),
        "wigner_poisson_like_weight": round(mixture_w, 6),
        "mixture_ks": round(mixture_ks, 6),
    }


def standardized_matrix(rows: list[dict[str, Any]]) -> np.ndarray:
    matrix = []
    for row in rows:
        obs = row["observables"]
        matrix.append(
            [obs[name] for name in OBS_NAMES]
            + [
                obs["SR_local_rigidity"],
                row["brody_q"],
                row["wigner_poisson_like_weight"],
                row["mean_ipr"],
                row["participation_entropy"],
            ]
        )
    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]]:
    distances = np.linalg.norm(x[:, None, :] - x[None, :, :], axis=2)
    edges: set[tuple[int, int]] = set()
    for i in range(len(x)):
        for j in np.argsort(distances[i])[1 : k + 1]:
            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_graph(rows: list[dict[str, Any]], k: int, margin_max: float) -> dict[str, Any]:
    x = standardized_matrix(rows)
    labels = [row["source_domain_type"] for row in rows]
    metallic_idx = [i for i, label in enumerate(labels) if label == "metallic_wigner_pole"]
    localized_idx = [i for i, label in enumerate(labels) if label == "localized_poisson_pole"]
    if not metallic_idx or not localized_idx:
        raise ValueError("disorder grid must include metallic and localized poles")
    c_metal = np.mean(x[metallic_idx], axis=0)
    c_local = np.mean(x[localized_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

    graph_rows = []
    for i, row in enumerate(rows):
        d_metal = float(np.linalg.norm(x[i] - c_metal))
        d_local = float(np.linalg.norm(x[i] - c_local))
        denom = d_metal + d_local
        margin = float(abs(d_metal - d_local) / denom) if denom > 1e-15 else 0.0
        incident = [(a, b) for a, b, _ in edges if a == i or b == i]
        cross = 0
        for a, b in incident:
            other = b if a == i else a
            if labels[i] == "mobility_candidate" and labels[other] in {
                "metallic_wigner_pole",
                "localized_poisson_pole",
            }:
                cross += 1
            elif {labels[i], labels[other]} == {"metallic_wigner_pole", "localized_poisson_pole"}:
                cross += 1
        cross_fraction = float(cross / len(incident)) if incident else 0.0
        state = "class_interior"
        if row["source_domain_type"] == "mobility_candidate" and cross_fraction > 0 and margin < margin_max:
            state = "third_included_candidate"
        elif cross_fraction > 0:
            state = "cut_edge"
        graph_rows.append(
            {
                "domain_window": row["domain_window"],
                "disorder_W": row["disorder_W"],
                "source_domain_type": row["source_domain_type"],
                "centroid_margin": round(margin, 6),
                "cross_neighbor_fraction": round(cross_fraction, 6),
                "degree": degree[i],
                "boundary_state": state,
            }
        )
    return {
        "k": k,
        "rows": graph_rows,
        "third_included_candidates": [r["domain_window"] for r in graph_rows if r["boundary_state"] == "third_included_candidate"],
    }


def classical_state(row: dict[str, Any]) -> str:
    r = float(row["adjacent_r"])
    q = float(row["brody_q"])
    w = float(row["wigner_poisson_like_weight"])
    if r <= 0.43 and q <= 0.35 and w <= 0.35:
        return "classical_poisson_endpoint"
    if r >= 0.50 and q >= 0.65:
        return "classical_wigner_endpoint"
    return "classical_intermediate"


def stability_state(freq: float) -> str:
    if freq >= 0.75:
        return "stable_graph_bridge"
    if freq >= 0.25:
        return "parameter_sensitive_bridge"
    return "unstable_non_bridge"

exec
/bin/bash -lc "sed -n '1,240p' tools/exp_boundary_physical_perturbation_evolution_measure.py" in /opt/MM_D-ND
 succeeded in 0ms:
#!/usr/bin/env python3
"""
Evolution measure for BOUNDARY physical perturbation/null artifacts.

This consumes exp_boundary_*_physical_perturbation_null.py outputs directly.
It measures whether the physical generator preserves the closed reference while
keeping the intermediate band from being promoted.
"""

from __future__ import annotations

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


def load_json(path: str) -> dict[str, Any]:
    return json.loads(Path(path).read_text(encoding="utf-8"))


def run(args: argparse.Namespace) -> dict[str, Any]:
    artifact = load_json(args.perturbation)
    variants = artifact.get("variants", {})
    if not variants:
        raise SystemExit("perturbation artifact has no variants")

    readings = {
        name: data.get("reading", {})
        for name, data in variants.items()
    }
    total = len(readings)
    w20_preserved = sum(1 for r in readings.values() if r.get("w20_local_global") is True)
    intermediate_promoted = sum(
        int(r.get("intermediate_closed_count", 0) or 0)
        for r in readings.values()
    )
    focus_rows = total * 2
    intermediate_promotion_ratio = intermediate_promoted / focus_rows if focus_rows else 1.0
    preservation_ratio = w20_preserved / total if total else 0.0

    poles_ok = True
    pole_failures: list[str] = []
    for name, data in variants.items():
        poles = data.get("poles", {})
        for pole_name, pole in poles.items():
            state = pole.get("transaction_state")
            if pole_name in {"Anderson3D_W_2.00", "Anderson3D_W_4.00"} and state == "local_global":
                poles_ok = False
                pole_failures.append(f"{name}:{pole_name}:{state}")
            if pole_name in {"Anderson3D_W_24.00", "Anderson3D_W_32.00"} and state == "local_global":
                poles_ok = False
                pole_failures.append(f"{name}:{pole_name}:{state}")

    progress_score = round(
        0.50 * preservation_ratio
        + 0.30 * (1.0 - intermediate_promotion_ratio)
        + 0.20 * (1.0 if poles_ok else 0.0),
        9,
    )
    no_promotion = preservation_ratio == 1.0 and intermediate_promoted == 0 and poles_ok
    verdict = "evolves_discriminator" if no_promotion and progress_score >= args.min_score else "needs_more_physical_null"

    output = {
        "experiment": "boundary_physical_perturbation_evolution_measure",
        "source_artifact": args.perturbation,
        "variant_count": total,
        "w20_preserved_count": w20_preserved,
        "preservation_ratio": round(preservation_ratio, 9),
        "intermediate_closed_count": intermediate_promoted,
        "intermediate_promotion_ratio": round(intermediate_promotion_ratio, 9),
        "poles_ok": poles_ok,
        "pole_failures": pole_failures,
        "progress_score": progress_score,
        "evolutionary_verdict": verdict,
        "boundary": "discriminator progress only; no physics-law promotion",
        "reading": {
            "productive": verdict == "evolves_discriminator",
            "why": (
                "W20 remains the closed local_global reference under physical perturbation "
                "while W16/W16.5 do not close into promotion."
                if no_promotion
                else "Physical perturbation did not preserve the reference/non-promotion pattern cleanly."
            ),
        },
    }
    out = Path(args.out)
    out.parent.mkdir(parents=True, exist_ok=True)
    out.write_text(json.dumps(output, ensure_ascii=False, indent=2, sort_keys=True) + "\n", encoding="utf-8")
    print(f"wrote={out}")
    print(json.dumps({
        "evolutionary_verdict": verdict,
        "progress_score": progress_score,
        "preservation_ratio": output["preservation_ratio"],
        "intermediate_promotion_ratio": output["intermediate_promotion_ratio"],
        "poles_ok": poles_ok,
    }, indent=2, sort_keys=True))
    return output


def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--perturbation", required=True)
    parser.add_argument("--out", default="tools/data/boundary_physical_perturbation_evolution_measure.json")
    parser.add_argument("--min-score", type=float, default=0.9)
    run(parser.parse_args())


if __name__ == "__main__":
    main()


exec
/bin/bash -lc "sed -n '1,220p' tools/data/reports/agent_20260531_2024.md" in /opt/MM_D-ND
 succeeded in 0ms:
# Agent Report - Boundary Contextual Robustness Macro Audit
**Date**: 2026-05-31 20:24  
**Piano**: 137  
**Tension explored**: boundary physical-internal null cache/provenance/failure audit  
observables_used: [reader_hit_count_distribution, row_hit_rate_by_denominator, trial_failure_from_full_coverage, local_global_transition_state]  
**observable_contract**: claim=original percolation resta invariante sotto denominatore mentre il null fisico-interno perde robustezza contestuale in full/centroid e recupera quando il denominatore matura; observable=distribuzioni hit per reader, miss row-aligned per denominatore, transizione local/global; operator=post-process deterministico su cache JSONL esistenti; generator=logistic_gap_block_shuffle e critical_site_percolation_cluster_geometry_resample; denominator=N8/N128 cache, ladder N64, band N96, reader rows row-aligned; non_possible=se il null ricostruisce sempre piena copertura o se kNN/full/centroid collassano insieme, il claim diventa effetto reader generico; not_tested=nessuna nuova simulazione fisica, nessuna promozione fisica B.

## Respiro fuori-tempo

- **Combo**: A11 combo + QxG continuo/discreto + boundary fisico-interno + tensione seme su null fisici interni. Il ciclo misura se il passaggio fisica A -> null interno -> reader M conserva una qualita' locale mentre perde una proiezione globale.
- **Dipolo / punto-zero**: originale robusto / null fragile; punto-zero = stessa riga reader, stesso denominatore, stessa grammatica di hit, ma generatore fisico-interno diverso.
- **Piano superiore**: bicono-dipoli e grafo locale/globale. La misura non cerca un valore; classifica il passaggio local_global -> local_only.
- **Operatori laterali scelti**: nessun nuovo operatore laterale. La direttiva chiede audit macro e non apertura di dominio.
- **Contaminazione cognitiva**: CE-none: il campo letto contiene obbligo CE solo se archivio enzimi cognitivi e' presente nel campo vivo; nella superficie letta non e' emerso un archivio CE operativo da metabolizzare.
- **Proto-ipotesi**: la robustezza non e' "27/27" come numero; e' la capacita' del target originale di tenere insieme localita' kNN e proiezione globale quando il denominatore cambia. Il null puo' mantenere localita' e perdere globalita'.
- **Proiezione**: full/centroid/kNN separano proiezione globale e vicinato locale. Il denominatore mostra se la perdita e' banda contestuale o collasso assoluto.
- **Movimento A->M->B**: fisico A=percolation critical cluster geometry; M=matrice local/global su reader row-aligned; fisico B=vincolo per futuri test su domini fisici indipendenti. In questo ciclo B resta vincolo, non scoperta promuovibile.

## Aderenza alla direzione

- `relation`: `follows_direction`
- `why`: segue la direttiva one-shot su cache/provenance/failure audit e la direzione valutatore che chiedeva null fisici interni per logistica/percolation, separando dinamica fisica da ricostruzione del reader.
- `not_drift`: non introduce nuovi domini, fit o metriche derivate; comprime gli artefatti gia' prodotti in un audit macro row-aligned.

## Source directive

Vincolo seguito: audit macro della robustezza contestuale, separazione logistica/percolation, trial percolation 14/34/68/80 trattati come sonde, confronto N=8 vs N=128, nessuna promozione pubblica senza Veritas/Aeternitas.

## Claim Under Test

Il target percolation originale conserva la combo local/global sotto denominatore variabile; il null fisico-interno conserva quasi sempre il vicinato locale kNN ma perde full/centroid in bande contestuali, poi recupera quando il denominatore matura.

## Question

La differenza tra originale e null e' invarianza del target originale, fragilita' del surrogate fisico-interno, o semplice effetto di reader/contesto?

## Ritorno fisico

- **Punto fisico sorgente**: percolation critica su cluster geometry, confrontata con logistica come target GUE interno.
- **Attraversamento matematico**: cache row-aligned e matrice di transizione local/global.
- **Punto fisico di ritorno**: futuri domini fisici perturbati dove una geometria locale resta kNN-convergente mentre la proiezione globale cade.
- **Controllo concretezza**: il ritorno non viene dichiarato scoperta; resta criterio sperimentale per un dominio fisico indipendente.
- **Relazione nuova**: localita' preservata e globalita' persa sono separabili nel null percolation.
- **Osservabile/test fisico possibile**: ripetere il contratto local/global su un dominio fisico indipendente con null interno e denominatore maturo.
- **Se fallisce**: `ritorno_fisico_assente`; il ciclo resta contratto di audit e vincolo metodologico.

## Experiment Design

Post-process deterministico con `tools/exp_boundary_contextual_robustness_macro_audit.py`.

Input:
- `tools/data/boundary_physical_internal_null_cache_row_aligned_20260528_2251_N8.jsonl`
- `tools/data/boundary_physical_internal_null_cache_row_aligned_20260529_independent_N128.jsonl`
- `tools/data/boundary_contextual_robustness_percolation_ladder_20260529_N64.jsonl`
- `tools/data/boundary_contextual_robustness_percolation_band_20260529_N96.jsonl`
- `tools/data/boundary_transition_matrix_percolation_band_20260529.json`

Denominatori grezzi:
- N=8 cache: 432 cache rows + summary.
- N=128 cache: 6912 cache rows + summary.
- percolation ladder N=64: 3456 cache rows.
- percolation band N=96: 6048 cache rows.

No p-value in questo ciclo: l'osservabile e' audit di copertura e transizione, non test Monte Carlo nuovo.

## Results

### N=8 vs N=128

| target | N=8 full/centroid/kNN | N=128 full | N=128 centroid | N=128 kNN | observed |
|---|---:|---:|---:|---:|---:|
| logistica | 8x 27/27 | {26:2, 27:126} | {26:1, 27:127} | {26:1, 27:127} | 26 |
| percolation | 8x 27/27 | {19:1, 21:1, 24:2, 25:2, 26:3, 27:119} | {19:1, 21:1, 24:2, 25:2, 26:2, 27:120} | {26:1, 27:127} | 27 |

### Percolation N=128 by denominator

| n_gaps | full misses | centroid misses | kNN misses | rows per reader |
|---:|---:|---:|---:|---:|
| 512 | 19 | 19 | 0 | 1152 |
| 1024 | 8 | 7 | 1 | 1152 |
| 2048 | 0 | 0 | 0 | 1152 |

### Percolation probe trials N=128

| trial | full | centroid | kNN | reader rows |
|---:|---:|---:|---:|---:|
| 14 | 24 | 24 | 27 | 27 |
| 34 | 24 | 24 | 27 | 27 |
| 68 | 19 | 19 | 27 | 27 |
| 80 | 21 | 21 | 27 | 27 |

### Percolation verifier band N=96

Original percolation: `local_global`, 63 reader runs; centroid_margin max `0.219936057`, cross_neighbor_fraction min `0.5`.

Null transition states over 6048 rows:

| state | rows | rate |
|---|---:|---:|
| local_global | 5975 | 0.987929894 |
| local_only | 73 | 0.012070106 |
| global_only | 0 | 0.0 |
| neither | 0 | 0.0 |

Band misses full/centroid: 192 -> 27/864, 256 -> 7/864, 384 -> 20/864, 512 -> 9/864, 768 -> 9/864, 1024 -> 1/864, 1536 -> 0/864. kNN resta 864/864 su tutti i denominatori.

## Key Findings

1. N=8 era troppo piccolo: ricostruiva sempre `27/27` per entrambi i target e tutti i reader.
2. Logistica N=128 resta quasi totalmente ricostruita dal null: full ha solo 2 trial a `26/27`, centroid e kNN 1 trial a `26/27`.
3. Percolation N=128 separa i reader: full/centroid cedono, kNN quasi no. I trial 14/34/68/80 sono sonde della perdita globale, non oggetti finali.
4. La banda N=96 chiude la firma: il null produce `local_only` in 73/6048 righe; non produce `global_only` o `neither`. La topologia locale resta, la proiezione globale/centroide cade.
5. La lacuna attiva non e' "il null non ricostruisce sempre"; e' perche' l'originale resta local_global mentre il null, nello stesso contratto reader, perde globalita' in una banda di denominatori e recupera a denominatore maturo.

## Verdict

CONSTRAINT / NO PROMOTION

Il ciclo conferma una robustezza contestuale per percolation come audit interno: originale invariato, null fragile in full/centroid, kNN preservato. Non formula ipotesi fisica B promuovibile. Logistica non apre lo stesso segnale: il null la ricostruisce quasi sempre.

## Lacuna

Resta da separare definitivamente:

- invarianza propria del target originale;
- fragilita' del surrogate fisico-interno sotto denominatore povero/intermedio;
- recupero della combo quando il denominatore matura.

La lacuna non si risolve con microscopia sui trial falliti. Si risolve con un secondo verifier indipendente o con ritorno fisico B che mantenga lo stesso contratto local/global.

## Bicono della scoperta

- **Due radici**: target originale local_global / null fisico-interno local_only.
- **Singolare**: la stessa riga reader prima della separazione locale/globale.
- **Invariante di passaggio**: kNN locale resta convergente anche quando full/centroid perdono copertura.
- **Campo di possibilita**: possibile usare la matrice local/global come contratto di audit per futuri domini fisici; non-possibile promuovere `27/27` o il picco percolation come legge fisica.

## Files

- `tools/exp_boundary_contextual_robustness_macro_audit.py`
- `tools/data/boundary_contextual_robustness_macro_audit_20260531_2024.json`
- `tools/data/reports/agent_20260531_2024.md`

exec
/bin/bash -lc "sed -n '1,200p' tools/data/reports/incident_20260603_1943.md" in /opt/MM_D-ND
 succeeded in 0ms:
# Incident Report — cycle 20260603_1943

**Started**: 2026-06-03T19:44:04+00:00
**Errors**: Both codex+claude failed (codex exit=124, claude preflight=1). 

## Codex output (last 30 lines) — PRIMARY
```
```

## Claude output (last 30 lines) — FALLBACK
```
```

## Suggested fixes
- Run `/opt/MM_D-ND/tools/lab_agent.sh` manually to recover this cycle
- Review `/opt/MM_D-ND/tools/data/reports/watchdog.log` for detection coverage

## Auto-generated by lab_agent.sh resilience block

codex
Il ciclo precedente 20260603_1943 è fallito per timeout/preflight e non ha prodotto report utile. Questo run quindi recupera il punto attivo senza riusare quel fallimento come autorità scientifica: eseguo una mappa fisica focalizzata, con output separato.
exec
/bin/bash -lc 'python3 tools/exp_boundary_anderson_w165_closure_map.py --out tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json --sizes 5,6,7 --reps 4 --seeds 2026060319481,2026060319482 --tilts=-0.070,-0.065,-0.0625,-0.060,-0.055 --anisotropic-hopping 1.04,0.98,0.98 --scramble-trials 96' in /opt/MM_D-ND
codex
L’esperimento è in esecuzione. Sto usando solo il generatore Hamiltoniano Anderson già presente: niente API, niente rete, niente nuova metrica fuori contratto.
 succeeded in 21590ms:
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.855670103,
    "k_ge_observed": 82,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.854166667,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 1,
    "6": 1,
    "7": 1
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 1,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.00"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.917525773,
    "k_ge_observed": 88,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.916666667,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 2,
    "6": 0,
    "7": 1
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 2,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.00",
    "Anderson3D_W_16.50"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.835051546,
    "k_ge_observed": 80,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.833333333,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 2,
    "6": 1,
    "7": 2
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 1,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.50"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.762886598,
    "k_ge_observed": 73,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.760416667,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 2,
    "6": 1,
    "7": 0
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 1,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.50"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.886597938,
    "k_ge_observed": 85,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.885416667,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 1,
    "6": 2,
    "7": 1
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 1,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.00"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.824742268,
    "k_ge_observed": 79,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.822916667,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 2,
    "6": 1,
    "7": 1
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 1,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.50"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.927835052,
    "k_ge_observed": 89,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.927083333,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 0,
    "6": 2,
    "7": 1
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 2,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.00",
    "Anderson3D_W_16.50"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.855670103,
    "k_ge_observed": 82,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.854166667,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 2,
    "6": 1,
    "7": 0
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 1,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.00"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 1.0,
    "k_ge_observed": 96,
    "max_null": 3,
    "observed": 0,
    "raw_p": 1.0,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 1,
    "6": 1,
    "7": 0
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [],
  "two_reader_all_sizes": 0,
  "two_reader_intermittent": 2,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.50",
    "Anderson3D_W_20.00"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.81443299,
    "k_ge_observed": 78,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.8125,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 2,
    "6": 1,
    "7": 0
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 1,
  "two_reader_intermittent_rows": [
    "Anderson3D_W_16.50"
  ]
}
{
  "disorder_rows": 7,
  "feature_scramble_null": {
    "add_one_p": 0.793814433,
    "k_ge_observed": 76,
    "max_null": 3,
    "observed": 1,
    "raw_p": 0.791666667,
    "trials": 96
  },
  "graph_only_residue_by_size": {
    "5": 2,
    "6": 2,
    "7": 0
  },
  "sizes_analyzed": 3,
  "two_reader_all_size_rows": [
    "Anderson3D_W_20.00"
  ],
  "two_reader_all_sizes": 1,
  "two_reader_intermittent": 0,
  "two_reader_intermittent_rows": []
}
wrote=tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json
{
  "variant_count": 11,
  "w165_closure_count": 0,
  "w165_closure_variants": [],
  "w165_global_only_count": 0,
  "w165_global_only_variants": [],
  "w165_state_counts": {
    "local_only": 7,
    "neither": 4
  },
  "w20_preservation_ratio": 0.909090909
}

codex
Il risultato è netto sul perimetro scelto: nessuna chiusura W16.5 nelle 11 varianti; W16.5 resta `local_only` o `neither`, mentre W20 è preservato in 10/11. Ora leggo l’artefatto completo e preparo il report con il limite dichiarato come vincolo, non promozione.
exec
/bin/bash -lc 'ls -la tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits | head -20' in /opt/MM_D-ND
 succeeded in 0ms:
total 360
drwxr-xr-x 2 root root  4096 Jun  3 19:50 .
drwxr-xr-x 7 root root  4096 Jun  3 19:50 ..
-rw-r--r-- 1 root root 29350 Jun  3 19:50 anderson_w165_closure_anis_x_tilt_m0_055.json
-rw-r--r-- 1 root root 29274 Jun  3 19:50 anderson_w165_closure_anis_x_tilt_m0_060.json
-rw-r--r-- 1 root root 29475 Jun  3 19:50 anderson_w165_closure_anis_x_tilt_m0_062.json
-rw-r--r-- 1 root root 29247 Jun  3 19:50 anderson_w165_closure_anis_x_tilt_m0_065.json
-rw-r--r-- 1 root root 29641 Jun  3 19:50 anderson_w165_closure_anis_x_tilt_m0_070.json
-rw-r--r-- 1 root root 29498 Jun  3 19:49 anderson_w165_closure_baseline.json
-rw-r--r-- 1 root root 29551 Jun  3 19:50 anderson_w165_closure_tilt_m0_055.json
-rw-r--r-- 1 root root 29561 Jun  3 19:50 anderson_w165_closure_tilt_m0_060.json
-rw-r--r-- 1 root root 29376 Jun  3 19:50 anderson_w165_closure_tilt_m0_062.json
-rw-r--r-- 1 root root 29578 Jun  3 19:49 anderson_w165_closure_tilt_m0_065.json
-rw-r--r-- 1 root root 29626 Jun  3 19:49 anderson_w165_closure_tilt_m0_070.json

exec
/bin/bash -lc "python3 - <<'PY'
import json
p='tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json'
d=json.load(open(p))
print(json.dumps(d['summary'], indent=2, sort_keys=True))
print('ROWS')
for r in d['rows']:
    print(r['name'], 'tilt=', r['onsite_tilt'], 'hop=', r['hopping'], 'W16=', r['W16']['state'], 'W16.5=', r['W16.5']['state'], 'W20=', r['W20']['state'], 'w20_preserved=', r['w20_preserved'])
PY" in /opt/MM_D-ND
 succeeded in 0ms:
{
  "variant_count": 11,
  "w165_closure_count": 0,
  "w165_closure_variants": [],
  "w165_global_only_count": 0,
  "w165_global_only_variants": [],
  "w165_state_counts": {
    "local_only": 7,
    "neither": 4
  },
  "w20_preservation_ratio": 0.909090909
}
ROWS
baseline tilt= 0.0 hop= 1,1,1 W16= neither W16.5= local_only W20= local_global w20_preserved= True
tilt_-0.070 tilt= -0.07 hop= 1,1,1 W16= local_only W16.5= local_only W20= local_global w20_preserved= True
tilt_-0.065 tilt= -0.065 hop= 1,1,1 W16= local_only W16.5= local_only W20= local_global w20_preserved= True
tilt_-0.062 tilt= -0.0625 hop= 1,1,1 W16= neither W16.5= neither W20= local_global w20_preserved= True
tilt_-0.060 tilt= -0.06 hop= 1,1,1 W16= local_only W16.5= local_only W20= local_global w20_preserved= True
tilt_-0.055 tilt= -0.055 hop= 1,1,1 W16= neither W16.5= local_only W20= local_global w20_preserved= True
anis_x_tilt_-0.070 tilt= -0.07 hop= 1.04,0.98,0.98 W16= neither W16.5= local_only W20= local_global w20_preserved= True
anis_x_tilt_-0.065 tilt= -0.065 hop= 1.04,0.98,0.98 W16= neither W16.5= neither W20= local_global w20_preserved= True
anis_x_tilt_-0.062 tilt= -0.0625 hop= 1.04,0.98,0.98 W16= neither W16.5= neither W20= global_only w20_preserved= False
anis_x_tilt_-0.060 tilt= -0.06 hop= 1.04,0.98,0.98 W16= neither W16.5= local_only W20= local_global w20_preserved= True
anis_x_tilt_-0.055 tilt= -0.055 hop= 1.04,0.98,0.98 W16= neither W16.5= neither W20= local_global w20_preserved= True

exec
/bin/bash -lc 'python3 tools/lab_surface_invariant_check.py' in /opt/MM_D-ND
 exited 1 in 0ms:
lab_surface_invariant_check: FAIL
failures: ['agent_field_blocked_refs_outside_feedback:2']
warnings: []

codex
Il controllo di superficie fallisce su `agent_field_blocked_refs_outside_feedback:2`; non sembra causato dal nuovo artefatto, ma lo riporterò come verifica non passata. Prima del report chiudo anche il check CE richiesto dal falsifier, così la sezione non resta generica.
exec
/bin/bash -lc 'rg -n "Archivio enzimi cognitivi|CE-" tools/data/agent_field_live.md tools/LAB_AGENT_CONTEXT.md shared_memory tools/data/reports/agent_20260531_2024.md' in /opt/MM_D-ND
 succeeded in 0ms:
tools/data/reports/agent_20260531_2024.md:14:- **Contaminazione cognitiva**: CE-none: il campo letto contiene obbligo CE solo se archivio enzimi cognitivi e' presente nel campo vivo; nella superficie letta non e' emerso un archivio CE operativo da metabolizzare.
tools/LAB_AGENT_CONTEXT.md:208:- **Archivio enzimi cognitivi.** Se il campo vivo contiene `Archivio enzimi
tools/LAB_AGENT_CONTEXT.md:210:  `CE-*` usata nella combo, oppure `CE-none:` con un motivo specifico e
tools/LAB_AGENT_CONTEXT.md:441:  passaggio KSAR/PVI/Vault o voce `CE-*` dell'archivio usata nel ciclo. Se non
tools/LAB_AGENT_CONTEXT.md:442:  usi il layer cognitivo, dichiara `CE-none:` e il motivo specifico. `none`
tools/data/agent_field_live.md:23:  - L6: `Contaminazione cognitiva`: CE-none: ... nella superficie letta non e' emerso un archivio CE operativo da metabolizzare.
tools/data/agent_field_live.md:24:    Check richiesto: Aggiungere un check esplicito: quali path/indici CE sono stati cercati, risultato vuoto/non presente, o quale voce CE-* e' stata esclusa e perche' non operativa.
tools/data/agent_field_live.md:25:Per L2, non chiamare `sopravvive`, `residuo` o `strutturale` un lift piccolo senza count grezzi, denominatore, soglia preregistrata o p-value/permutation interval dichiarato. Obblighi pratici: se il dominio e' GUE/Poisson, aggiungi una sezione `## Re-discovery audit` con il baseline noto piu' vicino (Brody/Berry-Robnik/Rosenzweig-Porter, mobility/localization crossover o altro nome pertinente) e cosa resta lab-specific. Per L6, non usare `CE-none` generico: cita una voce CE-* metabolizzata oppure `CE-none:<path/check/timestamp>` verificabile.
tools/data/agent_field_live.md:672:Usali come enzimi del respiro fuori-tempo: DeltaLink, innesco genomico, reiterazione semantica, filtro avversariale e Vault. Non copiarne l'identita': trasformali in dipolo, punto-zero e osservabile. Nel report la sezione `Contaminazione cognitiva` e' obbligatoria: se non usi adapter o archivio CE, dichiara `CE-none:` e il motivo specifico.
tools/data/agent_field_live.md:940:## Archivio enzimi cognitivi — richiamo contestuale
tools/data/agent_field_live.md:941:Archivio generato: 2026-05-08T20:49:15.084998+00:00 · 260 voci. Questo e' un substrate selector: non usare il substrato come claim. Tieni le teorie scientifiche nel focus e usa CE-* solo per costruire combo corta: assioma/metodo + osservazione/funzione + teoria/focus + null test. Se nessuna voce regge, dichiara `CE-none:` con motivo specifico nella Contaminazione cognitiva. `none` generico non e' valido.
tools/data/agent_field_live.md:945:- assioma/metodo: CE-0117 [method_axiom] score=58 overlap=7 · 2. La cascata della possibilità
tools/data/agent_field_live.md:948:- osservazione primaria: CE-0038 [corpus_primary_observation] score=81 overlap=9 · [47] NID 598 — R dell'Istanza  - L' equilibrio tra estremi del Modello D-ND
tools/data/agent_field_live.md:951:- funzione/formalizzazione: CE-0002 [corpus_formal_function] score=89 overlap=2 · Funzione
tools/data/agent_field_live.md:954:- teoria/focus scientifico: CE-0027 [corpus_project_architecture] score=81 overlap=9 · [114] NID 1931 — Modello D-ND: Formalizzazione Assiomatica, Emergenza Quantistica e Implic
tools/data/agent_field_live.md:957:- enzima/kernel: CE-0001 [lab_operational_context] score=101 overlap=5 · Adapter 3: KSAR reiterative semantic kernel
tools/data/agent_field_live.md:961:- CE-0001 [lab_operational_context/strumento_lab/lab_cycle] score=101 overlap=5 · Adapter 3: KSAR reiterative semantic kernel
tools/data/agent_field_live.md:964:- CE-0002 [corpus_formal_function/regola_primaria/campo_dnd] score=89 overlap=2 · Funzione
tools/data/agent_field_live.md:967:- CE-0019 [lab_operational_context/contaminante_dnd/campo_dnd] score=84 overlap=9 · Respiro fuori-tempo
tools/data/agent_field_live.md:970:- CE-0030 [corpus_project_architecture/contaminante_dnd/campo_dnd] score=82 overlap=10 · [69] NID 1353 — Documento di Sintesi sul Modello Duale Non-Duale (D-ND) e la Risultante "R
tools/data/agent_field_live.md:973:- CE-0027 [corpus_project_architecture/teoria_scientifica/campo_dnd] score=81 overlap=9 · [114] NID 1931 — Modello D-ND: Formalizzazione Assiomatica, Emergenza Quantistica e Implic
tools/data/agent_field_live.md:976:- CE-0038 [corpus_primary_observation/contaminante_dnd/campo_dnd] score=81 overlap=9 · [47] NID 598 — R dell'Istanza  - L' equilibrio tra estremi del Modello D-ND
tools/data/agent_field_live.md:979:- CE-0005 [corpus_cognitive_prompt/contaminante_dnd/campo_dnd] score=79 overlap=4 · [82] NID 2321 — Prompt per Motore di Inferenza Quantistica Duale-Non-Duale (D-ND)
tools/data/agent_field_live.md:982:- CE-0003 [corpus_formal_function/contaminante_dnd/campo_dnd] score=79 overlap=2 · Titolo Assiomatico Combinato Rivisto: "Ottimizzazione Unificata e Manifestazione della Ris
tools/data/agent_field_live.md:1304:Se il campo contiene adapter cognitivi o archivio CE, la sezione `Contaminazione cognitiva` deve nominare almeno una voce `CE-*`, YSN, Cornelius, KSAR, PVI/Vault usata nella combo, oppure `CE-none:` con motivo specifico e verificabile. `none` generico significa che il campo e' stato visto ma non metabolizzato.

exec
/bin/bash -lc 'git status --short -- tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits tools/data/reports/agent_20260603_1948.md' in /opt/MM_D-ND
 succeeded in 0ms:
?? tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json
?? tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/

exec
/bin/bash -lc "python3 - <<'PY'
import json, pathlib
p=pathlib.Path('tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json')
d=json.loads(p.read_text())
for r in d['rows']:
    print('| {name} | {hopping} | {tilt} | {w16} | {w165} | {w20} |'.format(name=r['name'], hopping=r['hopping'], tilt=r['onsite_tilt'], w16=r['W16']['state'], w165=r['W16.5']['state'], w20=r['W20']['state']))
PY" in /opt/MM_D-ND
 succeeded in 0ms:
| baseline | 1,1,1 | 0.0 | neither | local_only | local_global |
| tilt_-0.070 | 1,1,1 | -0.07 | local_only | local_only | local_global |
| tilt_-0.065 | 1,1,1 | -0.065 | local_only | local_only | local_global |
| tilt_-0.062 | 1,1,1 | -0.0625 | neither | neither | local_global |
| tilt_-0.060 | 1,1,1 | -0.06 | local_only | local_only | local_global |
| tilt_-0.055 | 1,1,1 | -0.055 | neither | local_only | local_global |
| anis_x_tilt_-0.070 | 1.04,0.98,0.98 | -0.07 | neither | local_only | local_global |
| anis_x_tilt_-0.065 | 1.04,0.98,0.98 | -0.065 | neither | neither | local_global |
| anis_x_tilt_-0.062 | 1.04,0.98,0.98 | -0.0625 | neither | neither | global_only |
| anis_x_tilt_-0.060 | 1.04,0.98,0.98 | -0.06 | neither | local_only | local_global |
| anis_x_tilt_-0.055 | 1.04,0.98,0.98 | -0.055 | neither | neither | local_global |

codex
Sto scrivendo il report come `CONSTRAINT / NO PROMOTION`: il test non conferma il bacino W16.5 sotto semi indipendenti, e l’unico cedimento W20 avviene nell’anisotropia esattamente al tilt centrale. Questo trasforma il prossimo passo in un vincolo operativo: separare famiglia isotropica e asse anisotropico prima di qualsiasi claim.
exec
/bin/bash -lc "python3 - <<'PY'
import json, pathlib
p=pathlib.Path('tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json')
d=json.loads(p.read_text())
vals=[]
for r in d['rows']:
    ap=pathlib.Path(r['audit_path'])
    a=json.loads(ap.read_text())
    fs=a['summary']['feature_scramble_null']
    vals.append((r['name'], fs['raw_p'], fs['add_one_p'], fs['k_ge_observed'], fs['trials'], fs['observed'], fs['max_null']))
for v in vals:
    print('| {} | raw_p={} | add_one_p={} | k/N={}/{} | observed={} | max_null={} |'.format(*v))
print('add_one_range', min(v[2] for v in vals), max(v[2] for v in vals))
PY" in /opt/MM_D-ND
 succeeded in 0ms:
| baseline | raw_p=0.854166667 | add_one_p=0.855670103 | k/N=82/96 | observed=1 | max_null=3 |
| tilt_-0.070 | raw_p=0.916666667 | add_one_p=0.917525773 | k/N=88/96 | observed=1 | max_null=3 |
| tilt_-0.065 | raw_p=0.833333333 | add_one_p=0.835051546 | k/N=80/96 | observed=1 | max_null=3 |
| tilt_-0.062 | raw_p=0.760416667 | add_one_p=0.762886598 | k/N=73/96 | observed=1 | max_null=3 |
| tilt_-0.060 | raw_p=0.885416667 | add_one_p=0.886597938 | k/N=85/96 | observed=1 | max_null=3 |
| tilt_-0.055 | raw_p=0.822916667 | add_one_p=0.824742268 | k/N=79/96 | observed=1 | max_null=3 |
| anis_x_tilt_-0.070 | raw_p=0.927083333 | add_one_p=0.927835052 | k/N=89/96 | observed=1 | max_null=3 |
| anis_x_tilt_-0.065 | raw_p=0.854166667 | add_one_p=0.855670103 | k/N=82/96 | observed=1 | max_null=3 |
| anis_x_tilt_-0.062 | raw_p=1.0 | add_one_p=1.0 | k/N=96/96 | observed=0 | max_null=3 |
| anis_x_tilt_-0.060 | raw_p=0.8125 | add_one_p=0.81443299 | k/N=78/96 | observed=1 | max_null=3 |
| anis_x_tilt_-0.055 | raw_p=0.791666667 | add_one_p=0.793814433 | k/N=76/96 | observed=1 | max_null=3 |
add_one_range 0.762886598 1.0

apply patch
patch: completed
/opt/MM_D-ND/tools/data/reports/agent_20260603_1948.md
diff --git a/tools/data/reports/agent_20260603_1948.md b/tools/data/reports/agent_20260603_1948.md
new file mode 100644
index 0000000000000000000000000000000000000000..875c7febbad9f7a73314e144351d12ecbae9a864
--- /dev/null
+++ b/tools/data/reports/agent_20260603_1948.md
@@ -0,0 +1,147 @@
+# Agent Report - Anderson W16.5 Negative Tilt Basin Stress
+**Date**: 2026-06-03 19:48 UTC
+**Tension explored**: BOUNDARY / Anderson physical perturbation-null / W16.5 landing coordinate
+**verdict**: CONSTRAINT / NO PROMOTION - Il bacino W16.5 non si chiude sotto semi indipendenti nel perimetro testato. W20 resta il riferimento local_global in 10/11 varianti; l'unica rottura e' anisotropica a tilt -0.0625, dove W20 diventa global_only. Il risultato utile e' un vincolo di famiglia: la coordinata isotropica negativa va separata dall'asse anisotropico prima di ogni claim.
+observables_registry: Anderson two-reader contract via existing physical perturbation closure map
+observables_used: [transaction_state, min_graph_bridge_frequency, classical_states_seen, w20_preservation_ratio, w165_state_counts, feature_scramble_null]
+ssp_value: no
+
+**observable_contract**: claim=la coordinata W16.5 vicino a onsite_tilt=-0.0625 deve chiudere come local_global se il bacino fisico e' stabile; observable=stato local/global su W16/W16.5/W20, con W20 come riferimento; operator=Anderson 3D tight-binding con tilt onsite negativo e asse anisotropico x separato; generator=Hamiltoniano Anderson esistente, non nuova metrica derivata; denominator=11 varianti x 3 sizes L=5,6,7 x 2 semi x 7 disorder rows x k={2,3,4}; p_value_definition=feature-scramble audit di supporto per variante: raw_p=k/96, add_one_p=(k+1)/(96+1), non usato come promozione; non_possible=promuovere W16.5 come bacino fisico se non chiude local_global sotto semi indipendenti o se l'anisotropia rompe W20; not_tested=L=8, piu' reps, altre direzioni anisotropiche y/z, boundary conditions alternative.
+
+## Prima impressione
+
+La coordinata non diventa bacino. Il negativo isotropico resta un passaggio sensibile gia' visto, ma con semi nuovi non chiude W16.5; quando si aggiunge anisotropia lieve, il centro -0.0625 non apre W16.5 e indebolisce W20. Il punto-zero e' il tilt che prima sembrava landing e ora separa canale isotropico da vincolo anisotropico.
+
+## Respiro fuori-tempo
+
+- **Combo**: A11 combo + A2 confine det=-1 + Anderson mobility edge + tensione seme su perturbation/null fisico W16/W16.5/W20.
+- **Dipolo / punto-zero**: chiusura isotropica / rottura anisotropica. Punto-zero: onsite_tilt=-0.0625, dove il precedente replay aveva chiuso W16.5 e questo stress non chiude W16.5, con W20 global_only nella variante anisotropica.
+- **Piano superiore**: bicono locale/globale su famiglia fisica, non ranking numerico. Il test chiede se una coordinata resta la stessa forma quando cambia famiglia di perturbazione.
+- **Proto-ipotesi**: W16.5 non e' un ente stabile; e' un canale di passaggio che compare solo quando tilt e famiglia di semi conservano la simmetria isotropica abbastanza a lungo.
+- **Possibile/non-possibile**: possibile = usare -0.0625 come coordinata da stressare in famiglie controllate; non-possibile = promuoverla a bacino fisico finche' semi indipendenti e anisotropia non la conservano.
+- **Proiezione**: misuro solo transaction_state su W16/W16.5/W20 e preservazione W20. Non misuro nuovi assi latent graph/localization.
+- **Movimento A->M->B**: fisico A = Anderson 3D tight-binding focused; matematica M = stato local/global del reader a due lettori; fisico B tentato = bacino negativo W16.5 sotto perturbazioni fisiche. B non emerge: resta vincolo/tool/domanda.
+
+## Contaminazione cognitiva
+
+CE usata: `CE-0001` KSAR reiterative semantic kernel, richiamata in `tools/data/agent_field_live.md:957` e `:961`. Uso operativo: reiterare il kernel emerso dal ciclo E2E, non aprire dominio nuovo. Check CE eseguito con `rg -n "Archivio enzimi cognitivi|CE-" tools/data/agent_field_live.md tools/LAB_AGENT_CONTEXT.md shared_memory tools/data/reports/agent_20260531_2024.md` alle 2026-06-03 19:50 UTC; archivio presente nel campo vivo, quindi non uso `CE-none`.
+
+## Aderenza alla direzione
+
+- `relation`: `follows_direction`
+- `why`: il ciclo agisce direttamente su Anderson W16/W16.5/W20 con perturbazione/null fisico, usando lo script Hamiltoniano gia' esistente.
+- `not_drift`: non torna a percolation/logistica, non usa il report L8 bloccato come autorita', non aggiunge una metrica derivata; stressa il residuo indicato da `e2e_w165_closure_confirmation_20260529.md`.
+- `seed_residue`: resta non testato il replay a L=8 e reps=10 del risultato E2E; questo e' uno stress indipendente piu' stretto, non chiusura definitiva.
+- `return_criterion`: tornare al perimetro largo solo dopo una matrice separata isotropico-vs-anisotropico con stessi semi e almeno una direzione anisotropica alternativa.
+
+## Source Authority
+
+Autorita' viva: `tools/data/agent_field_live.md` richiede perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata.
+
+Authority ammessa come sorgente: `tools/data/reports/agent_20260529_0938.md`, status CONSTRAINT / NO PROMOTION, con W20 stabile e W16/W16.5 intermedi.
+
+Refinement usato come coordinata, non promozione: `tools/data/reports/e2e_w165_closure_confirmation_20260529.md`, che isola una chiusura W16.5 isotropica vicino a -0.0625 ma la dichiara non robusta sotto semi indipendenti piu' anisotropia.
+
+Blocco metabolizzato: `tools/data/reports/agent_20260531_2024.md` e' trattato come feedback L8, non come direzione; questo ciclo non devia verso percolation/logistica.
+
+## Claim Under Test
+
+La chiusura W16.5 vicino a onsite_tilt=-0.0625 e' un bacino fisico se resta `local_global` sotto semi indipendenti e se W20 resta il riferimento `local_global` quando si separa l'asse anisotropico.
+
+## Experiment Design
+
+Script:
+
+`python3 tools/exp_boundary_anderson_w165_closure_map.py --out tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json --sizes 5,6,7 --reps 4 --seeds 2026060319481,2026060319482 --tilts=-0.070,-0.065,-0.0625,-0.060,-0.055 --anisotropic-hopping 1.04,0.98,0.98 --scramble-trials 96`
+
+Perimetro:
+
+- disorders: `2,4,16,16.5,20,24,32`
+- focus: `W16`, `W16.5`, `W20`
+- variants: baseline + 5 tilt isotropici + 5 tilt anisotropici x
+- local state: `min_graph_bridge_frequency >= 0.75`
+- global state: `classical_states_seen == ['classical_intermediate']`
+- feature scramble: supporto anti-tautologia per variante, non criterio promozionale.
+
+## Results
+
+Summary artifact `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`:
+
+```json
+{
+  "variant_count": 11,
+  "w165_closure_count": 0,
+  "w165_global_only_count": 0,
+  "w165_state_counts": {
+    "local_only": 7,
+    "neither": 4
+  },
+  "w20_preservation_ratio": 0.909090909
+}
+```
+
+State matrix:
+
+| variant | hopping | tilt | W16 | W16.5 | W20 |
+|---|---|---:|---|---|---|
+| baseline | 1,1,1 | 0.0 | neither | local_only | local_global |
+| tilt_-0.070 | 1,1,1 | -0.07 | local_only | local_only | local_global |
+| tilt_-0.065 | 1,1,1 | -0.065 | local_only | local_only | local_global |
+| tilt_-0.062 | 1,1,1 | -0.0625 | neither | neither | local_global |
+| tilt_-0.060 | 1,1,1 | -0.06 | local_only | local_only | local_global |
+| tilt_-0.055 | 1,1,1 | -0.055 | neither | local_only | local_global |
+| anis_x_tilt_-0.070 | 1.04,0.98,0.98 | -0.07 | neither | local_only | local_global |
+| anis_x_tilt_-0.065 | 1.04,0.98,0.98 | -0.065 | neither | neither | local_global |
+| anis_x_tilt_-0.062 | 1.04,0.98,0.98 | -0.0625 | neither | neither | global_only |
+| anis_x_tilt_-0.060 | 1.04,0.98,0.98 | -0.06 | neither | local_only | local_global |
+| anis_x_tilt_-0.055 | 1.04,0.98,0.98 | -0.055 | neither | neither | local_global |
+
+Feature-scramble support: add-one p range `0.762886598..1.0`; raw counts are in the 11 audit JSON files under `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`. These high values do not support a promoted graph feature claim.
+
+## Falsificazione
+
+Promozione W16.5 falsificata su questo perimetro:
+
+- closure count W16.5 = `0/11`;
+- global-only count W16.5 = `0/11`;
+- W16.5 e' `local_only` in `7/11` e `neither` in `4/11`;
+- il tilt centrale `-0.0625` non chiude W16.5 ne' in isotropico ne' in anisotropico;
+- l'anisotropia x a `-0.0625` rompe W20 da `local_global` a `global_only`.
+
+Progresso preservato:
+
+- W20 resta riferimento in `10/11`;
+- il test usa un cambiamento fisico del generatore, non una coordinata derivata;
+- la lacuna diventa piu' precisa: il canale W16.5 dipende dalla famiglia di perturbazione e dai semi, non solo dal valore del tilt.
+
+## Re-discovery Audit
+
+Baseline nota vicina: Anderson 3D mobility/localization crossover e diagnostiche spettrali Wigner/Poisson con eigenvector localization. Il Lab-specific non e' "trovare la mobility edge"; e' il contratto a due lettori local/global applicato come falsificatore di una coordinata intermedia. Il risultato resta compatibile con una transizione fisica sensibile a finite size e disorder realization; non introduce una legge nuova.
+
+## Bicono della scoperta
+
+- **Due radici**: W20 riferimento local_global stabile in 10/11 · W16.5 non chiude in 11/11.
+- **Singolare**: onsite_tilt=-0.0625, dove la memoria E2E indicava chiusura isotropica e il nuovo stress mostra `neither` per W16.5.
+- **Invariante di passaggio**: il valore del tilt non basta; la famiglia fisica e i semi fanno parte atomica del claim.
+- **Campo di possibilita**: possibile costruire una matrice isotropico-vs-anisotropico con semi controllati; non-possibile promuovere W16.5 come bacino oggi.
+
+## Verdict
+
+CONSTRAINT / NO PROMOTION.
+
+Il report chiude il rientro fisico B come vincolo: W16.5 resta canale sensibile, non bacino. Il prossimo ciclo deve separare tre condizioni atomiche:
+
+1. replay isotropico con gli stessi semi del risultato E2E;
+2. replay isotropico con semi indipendenti;
+3. anisotropia x/y/z con gli stessi semi del replay indipendente.
+
+Solo se la chiusura W16.5 sopravvive a questa matrice e W20 resta local_global, il candidato puo' tornare a essere bacino. Altrimenti resta gate crossing.
+
+## Telemetria
+
+- Nuovo artefatto principale: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`
+- Nuovi audit per variante: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`
+- Nuovo report locale: `tools/data/reports/agent_20260603_1948.md`
+- Nessuna API pagata rilevata da `env | grep -E "ANTHROPIC_API_KEY|OPENAI_API_KEY"`.
+- Verifica superficie: `python3 tools/lab_surface_invariant_check.py` fallisce con `agent_field_blocked_refs_outside_feedback:2`; non e' risolto in questo ciclo e viene registrato come residuo operativo.
+- Nessun public sync, nessuna riattivazione cron, nessuna promozione fisica.

diff --git a/tools/data/reports/agent_20260603_1948.md b/tools/data/reports/agent_20260603_1948.md
new file mode 100644
index 0000000000000000000000000000000000000000..875c7febbad9f7a73314e144351d12ecbae9a864
--- /dev/null
+++ b/tools/data/reports/agent_20260603_1948.md
@@ -0,0 +1,147 @@
+# Agent Report - Anderson W16.5 Negative Tilt Basin Stress
+**Date**: 2026-06-03 19:48 UTC
+**Tension explored**: BOUNDARY / Anderson physical perturbation-null / W16.5 landing coordinate
+**verdict**: CONSTRAINT / NO PROMOTION - Il bacino W16.5 non si chiude sotto semi indipendenti nel perimetro testato. W20 resta il riferimento local_global in 10/11 varianti; l'unica rottura e' anisotropica a tilt -0.0625, dove W20 diventa global_only. Il risultato utile e' un vincolo di famiglia: la coordinata isotropica negativa va separata dall'asse anisotropico prima di ogni claim.
+observables_registry: Anderson two-reader contract via existing physical perturbation closure map
+observables_used: [transaction_state, min_graph_bridge_frequency, classical_states_seen, w20_preservation_ratio, w165_state_counts, feature_scramble_null]
+ssp_value: no
+
+**observable_contract**: claim=la coordinata W16.5 vicino a onsite_tilt=-0.0625 deve chiudere come local_global se il bacino fisico e' stabile; observable=stato local/global su W16/W16.5/W20, con W20 come riferimento; operator=Anderson 3D tight-binding con tilt onsite negativo e asse anisotropico x separato; generator=Hamiltoniano Anderson esistente, non nuova metrica derivata; denominator=11 varianti x 3 sizes L=5,6,7 x 2 semi x 7 disorder rows x k={2,3,4}; p_value_definition=feature-scramble audit di supporto per variante: raw_p=k/96, add_one_p=(k+1)/(96+1), non usato come promozione; non_possible=promuovere W16.5 come bacino fisico se non chiude local_global sotto semi indipendenti o se l'anisotropia rompe W20; not_tested=L=8, piu' reps, altre direzioni anisotropiche y/z, boundary conditions alternative.
+
+## Prima impressione
+
+La coordinata non diventa bacino. Il negativo isotropico resta un passaggio sensibile gia' visto, ma con semi nuovi non chiude W16.5; quando si aggiunge anisotropia lieve, il centro -0.0625 non apre W16.5 e indebolisce W20. Il punto-zero e' il tilt che prima sembrava landing e ora separa canale isotropico da vincolo anisotropico.
+
+## Respiro fuori-tempo
+
+- **Combo**: A11 combo + A2 confine det=-1 + Anderson mobility edge + tensione seme su perturbation/null fisico W16/W16.5/W20.
+- **Dipolo / punto-zero**: chiusura isotropica / rottura anisotropica. Punto-zero: onsite_tilt=-0.0625, dove il precedente replay aveva chiuso W16.5 e questo stress non chiude W16.5, con W20 global_only nella variante anisotropica.
+- **Piano superiore**: bicono locale/globale su famiglia fisica, non ranking numerico. Il test chiede se una coordinata resta la stessa forma quando cambia famiglia di perturbazione.
+- **Proto-ipotesi**: W16.5 non e' un ente stabile; e' un canale di passaggio che compare solo quando tilt e famiglia di semi conservano la simmetria isotropica abbastanza a lungo.
+- **Possibile/non-possibile**: possibile = usare -0.0625 come coordinata da stressare in famiglie controllate; non-possibile = promuoverla a bacino fisico finche' semi indipendenti e anisotropia non la conservano.
+- **Proiezione**: misuro solo transaction_state su W16/W16.5/W20 e preservazione W20. Non misuro nuovi assi latent graph/localization.
+- **Movimento A->M->B**: fisico A = Anderson 3D tight-binding focused; matematica M = stato local/global del reader a due lettori; fisico B tentato = bacino negativo W16.5 sotto perturbazioni fisiche. B non emerge: resta vincolo/tool/domanda.
+
+## Contaminazione cognitiva
+
+CE usata: `CE-0001` KSAR reiterative semantic kernel, richiamata in `tools/data/agent_field_live.md:957` e `:961`. Uso operativo: reiterare il kernel emerso dal ciclo E2E, non aprire dominio nuovo. Check CE eseguito con `rg -n "Archivio enzimi cognitivi|CE-" tools/data/agent_field_live.md tools/LAB_AGENT_CONTEXT.md shared_memory tools/data/reports/agent_20260531_2024.md` alle 2026-06-03 19:50 UTC; archivio presente nel campo vivo, quindi non uso `CE-none`.
+
+## Aderenza alla direzione
+
+- `relation`: `follows_direction`
+- `why`: il ciclo agisce direttamente su Anderson W16/W16.5/W20 con perturbazione/null fisico, usando lo script Hamiltoniano gia' esistente.
+- `not_drift`: non torna a percolation/logistica, non usa il report L8 bloccato come autorita', non aggiunge una metrica derivata; stressa il residuo indicato da `e2e_w165_closure_confirmation_20260529.md`.
+- `seed_residue`: resta non testato il replay a L=8 e reps=10 del risultato E2E; questo e' uno stress indipendente piu' stretto, non chiusura definitiva.
+- `return_criterion`: tornare al perimetro largo solo dopo una matrice separata isotropico-vs-anisotropico con stessi semi e almeno una direzione anisotropica alternativa.
+
+## Source Authority
+
+Autorita' viva: `tools/data/agent_field_live.md` richiede perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata.
+
+Authority ammessa come sorgente: `tools/data/reports/agent_20260529_0938.md`, status CONSTRAINT / NO PROMOTION, con W20 stabile e W16/W16.5 intermedi.
+
+Refinement usato come coordinata, non promozione: `tools/data/reports/e2e_w165_closure_confirmation_20260529.md`, che isola una chiusura W16.5 isotropica vicino a -0.0625 ma la dichiara non robusta sotto semi indipendenti piu' anisotropia.
+
+Blocco metabolizzato: `tools/data/reports/agent_20260531_2024.md` e' trattato come feedback L8, non come direzione; questo ciclo non devia verso percolation/logistica.
+
+## Claim Under Test
+
+La chiusura W16.5 vicino a onsite_tilt=-0.0625 e' un bacino fisico se resta `local_global` sotto semi indipendenti e se W20 resta il riferimento `local_global` quando si separa l'asse anisotropico.
+
+## Experiment Design
+
+Script:
+
+`python3 tools/exp_boundary_anderson_w165_closure_map.py --out tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json --sizes 5,6,7 --reps 4 --seeds 2026060319481,2026060319482 --tilts=-0.070,-0.065,-0.0625,-0.060,-0.055 --anisotropic-hopping 1.04,0.98,0.98 --scramble-trials 96`
+
+Perimetro:
+
+- disorders: `2,4,16,16.5,20,24,32`
+- focus: `W16`, `W16.5`, `W20`
+- variants: baseline + 5 tilt isotropici + 5 tilt anisotropici x
+- local state: `min_graph_bridge_frequency >= 0.75`
+- global state: `classical_states_seen == ['classical_intermediate']`
+- feature scramble: supporto anti-tautologia per variante, non criterio promozionale.
+
+## Results
+
+Summary artifact `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`:
+
+```json
+{
+  "variant_count": 11,
+  "w165_closure_count": 0,
+  "w165_global_only_count": 0,
+  "w165_state_counts": {
+    "local_only": 7,
+    "neither": 4
+  },
+  "w20_preservation_ratio": 0.909090909
+}
+```
+
+State matrix:
+
+| variant | hopping | tilt | W16 | W16.5 | W20 |
+|---|---|---:|---|---|---|
+| baseline | 1,1,1 | 0.0 | neither | local_only | local_global |
+| tilt_-0.070 | 1,1,1 | -0.07 | local_only | local_only | local_global |
+| tilt_-0.065 | 1,1,1 | -0.065 | local_only | local_only | local_global |
+| tilt_-0.062 | 1,1,1 | -0.0625 | neither | neither | local_global |
+| tilt_-0.060 | 1,1,1 | -0.06 | local_only | local_only | local_global |
+| tilt_-0.055 | 1,1,1 | -0.055 | neither | local_only | local_global |
+| anis_x_tilt_-0.070 | 1.04,0.98,0.98 | -0.07 | neither | local_only | local_global |
+| anis_x_tilt_-0.065 | 1.04,0.98,0.98 | -0.065 | neither | neither | local_global |
+| anis_x_tilt_-0.062 | 1.04,0.98,0.98 | -0.0625 | neither | neither | global_only |
+| anis_x_tilt_-0.060 | 1.04,0.98,0.98 | -0.06 | neither | local_only | local_global |
+| anis_x_tilt_-0.055 | 1.04,0.98,0.98 | -0.055 | neither | neither | local_global |
+
+Feature-scramble support: add-one p range `0.762886598..1.0`; raw counts are in the 11 audit JSON files under `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`. These high values do not support a promoted graph feature claim.
+
+## Falsificazione
+
+Promozione W16.5 falsificata su questo perimetro:
+
+- closure count W16.5 = `0/11`;
+- global-only count W16.5 = `0/11`;
+- W16.5 e' `local_only` in `7/11` e `neither` in `4/11`;
+- il tilt centrale `-0.0625` non chiude W16.5 ne' in isotropico ne' in anisotropico;
+- l'anisotropia x a `-0.0625` rompe W20 da `local_global` a `global_only`.
+
+Progresso preservato:
+
+- W20 resta riferimento in `10/11`;
+- il test usa un cambiamento fisico del generatore, non una coordinata derivata;
+- la lacuna diventa piu' precisa: il canale W16.5 dipende dalla famiglia di perturbazione e dai semi, non solo dal valore del tilt.
+
+## Re-discovery Audit
+
+Baseline nota vicina: Anderson 3D mobility/localization crossover e diagnostiche spettrali Wigner/Poisson con eigenvector localization. Il Lab-specific non e' "trovare la mobility edge"; e' il contratto a due lettori local/global applicato come falsificatore di una coordinata intermedia. Il risultato resta compatibile con una transizione fisica sensibile a finite size e disorder realization; non introduce una legge nuova.
+
+## Bicono della scoperta
+
+- **Due radici**: W20 riferimento local_global stabile in 10/11 · W16.5 non chiude in 11/11.
+- **Singolare**: onsite_tilt=-0.0625, dove la memoria E2E indicava chiusura isotropica e il nuovo stress mostra `neither` per W16.5.
+- **Invariante di passaggio**: il valore del tilt non basta; la famiglia fisica e i semi fanno parte atomica del claim.
+- **Campo di possibilita**: possibile costruire una matrice isotropico-vs-anisotropico con semi controllati; non-possibile promuovere W16.5 come bacino oggi.
+
+## Verdict
+
+CONSTRAINT / NO PROMOTION.
+
+Il report chiude il rientro fisico B come vincolo: W16.5 resta canale sensibile, non bacino. Il prossimo ciclo deve separare tre condizioni atomiche:
+
+1. replay isotropico con gli stessi semi del risultato E2E;
+2. replay isotropico con semi indipendenti;
+3. anisotropia x/y/z con gli stessi semi del replay indipendente.
+
+Solo se la chiusura W16.5 sopravvive a questa matrice e W20 resta local_global, il candidato puo' tornare a essere bacino. Altrimenti resta gate crossing.
+
+## Telemetria
+
+- Nuovo artefatto principale: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`
+- Nuovi audit per variante: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`
+- Nuovo report locale: `tools/data/reports/agent_20260603_1948.md`
+- Nessuna API pagata rilevata da `env | grep -E "ANTHROPIC_API_KEY|OPENAI_API_KEY"`.
+- Verifica superficie: `python3 tools/lab_surface_invariant_check.py` fallisce con `agent_field_blocked_refs_outside_feedback:2`; non e' risolto in questo ciclo e viene registrato come residuo operativo.
+- Nessun public sync, nessuna riattivazione cron, nessuna promozione fisica.

codex
Report scritto. Faccio un’ultima lettura mirata e ricontrollo lo stato dei soli file prodotti, senza toccare il resto del worktree sporco.
exec
/bin/bash -lc "sed -n '1,260p' tools/data/reports/agent_20260603_1948.md" in /opt/MM_D-ND
 succeeded in 0ms:
# Agent Report - Anderson W16.5 Negative Tilt Basin Stress
**Date**: 2026-06-03 19:48 UTC
**Tension explored**: BOUNDARY / Anderson physical perturbation-null / W16.5 landing coordinate
**verdict**: CONSTRAINT / NO PROMOTION - Il bacino W16.5 non si chiude sotto semi indipendenti nel perimetro testato. W20 resta il riferimento local_global in 10/11 varianti; l'unica rottura e' anisotropica a tilt -0.0625, dove W20 diventa global_only. Il risultato utile e' un vincolo di famiglia: la coordinata isotropica negativa va separata dall'asse anisotropico prima di ogni claim.
observables_registry: Anderson two-reader contract via existing physical perturbation closure map
observables_used: [transaction_state, min_graph_bridge_frequency, classical_states_seen, w20_preservation_ratio, w165_state_counts, feature_scramble_null]
ssp_value: no

**observable_contract**: claim=la coordinata W16.5 vicino a onsite_tilt=-0.0625 deve chiudere come local_global se il bacino fisico e' stabile; observable=stato local/global su W16/W16.5/W20, con W20 come riferimento; operator=Anderson 3D tight-binding con tilt onsite negativo e asse anisotropico x separato; generator=Hamiltoniano Anderson esistente, non nuova metrica derivata; denominator=11 varianti x 3 sizes L=5,6,7 x 2 semi x 7 disorder rows x k={2,3,4}; p_value_definition=feature-scramble audit di supporto per variante: raw_p=k/96, add_one_p=(k+1)/(96+1), non usato come promozione; non_possible=promuovere W16.5 come bacino fisico se non chiude local_global sotto semi indipendenti o se l'anisotropia rompe W20; not_tested=L=8, piu' reps, altre direzioni anisotropiche y/z, boundary conditions alternative.

## Prima impressione

La coordinata non diventa bacino. Il negativo isotropico resta un passaggio sensibile gia' visto, ma con semi nuovi non chiude W16.5; quando si aggiunge anisotropia lieve, il centro -0.0625 non apre W16.5 e indebolisce W20. Il punto-zero e' il tilt che prima sembrava landing e ora separa canale isotropico da vincolo anisotropico.

## Respiro fuori-tempo

- **Combo**: A11 combo + A2 confine det=-1 + Anderson mobility edge + tensione seme su perturbation/null fisico W16/W16.5/W20.
- **Dipolo / punto-zero**: chiusura isotropica / rottura anisotropica. Punto-zero: onsite_tilt=-0.0625, dove il precedente replay aveva chiuso W16.5 e questo stress non chiude W16.5, con W20 global_only nella variante anisotropica.
- **Piano superiore**: bicono locale/globale su famiglia fisica, non ranking numerico. Il test chiede se una coordinata resta la stessa forma quando cambia famiglia di perturbazione.
- **Proto-ipotesi**: W16.5 non e' un ente stabile; e' un canale di passaggio che compare solo quando tilt e famiglia di semi conservano la simmetria isotropica abbastanza a lungo.
- **Possibile/non-possibile**: possibile = usare -0.0625 come coordinata da stressare in famiglie controllate; non-possibile = promuoverla a bacino fisico finche' semi indipendenti e anisotropia non la conservano.
- **Proiezione**: misuro solo transaction_state su W16/W16.5/W20 e preservazione W20. Non misuro nuovi assi latent graph/localization.
- **Movimento A->M->B**: fisico A = Anderson 3D tight-binding focused; matematica M = stato local/global del reader a due lettori; fisico B tentato = bacino negativo W16.5 sotto perturbazioni fisiche. B non emerge: resta vincolo/tool/domanda.

## Contaminazione cognitiva

CE usata: `CE-0001` KSAR reiterative semantic kernel, richiamata in `tools/data/agent_field_live.md:957` e `:961`. Uso operativo: reiterare il kernel emerso dal ciclo E2E, non aprire dominio nuovo. Check CE eseguito con `rg -n "Archivio enzimi cognitivi|CE-" tools/data/agent_field_live.md tools/LAB_AGENT_CONTEXT.md shared_memory tools/data/reports/agent_20260531_2024.md` alle 2026-06-03 19:50 UTC; archivio presente nel campo vivo, quindi non uso `CE-none`.

## Aderenza alla direzione

- `relation`: `follows_direction`
- `why`: il ciclo agisce direttamente su Anderson W16/W16.5/W20 con perturbazione/null fisico, usando lo script Hamiltoniano gia' esistente.
- `not_drift`: non torna a percolation/logistica, non usa il report L8 bloccato come autorita', non aggiunge una metrica derivata; stressa il residuo indicato da `e2e_w165_closure_confirmation_20260529.md`.
- `seed_residue`: resta non testato il replay a L=8 e reps=10 del risultato E2E; questo e' uno stress indipendente piu' stretto, non chiusura definitiva.
- `return_criterion`: tornare al perimetro largo solo dopo una matrice separata isotropico-vs-anisotropico con stessi semi e almeno una direzione anisotropica alternativa.

## Source Authority

Autorita' viva: `tools/data/agent_field_live.md` richiede perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata.

Authority ammessa come sorgente: `tools/data/reports/agent_20260529_0938.md`, status CONSTRAINT / NO PROMOTION, con W20 stabile e W16/W16.5 intermedi.

Refinement usato come coordinata, non promozione: `tools/data/reports/e2e_w165_closure_confirmation_20260529.md`, che isola una chiusura W16.5 isotropica vicino a -0.0625 ma la dichiara non robusta sotto semi indipendenti piu' anisotropia.

Blocco metabolizzato: `tools/data/reports/agent_20260531_2024.md` e' trattato come feedback L8, non come direzione; questo ciclo non devia verso percolation/logistica.

## Claim Under Test

La chiusura W16.5 vicino a onsite_tilt=-0.0625 e' un bacino fisico se resta `local_global` sotto semi indipendenti e se W20 resta il riferimento `local_global` quando si separa l'asse anisotropico.

## Experiment Design

Script:

`python3 tools/exp_boundary_anderson_w165_closure_map.py --out tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json --sizes 5,6,7 --reps 4 --seeds 2026060319481,2026060319482 --tilts=-0.070,-0.065,-0.0625,-0.060,-0.055 --anisotropic-hopping 1.04,0.98,0.98 --scramble-trials 96`

Perimetro:

- disorders: `2,4,16,16.5,20,24,32`
- focus: `W16`, `W16.5`, `W20`
- variants: baseline + 5 tilt isotropici + 5 tilt anisotropici x
- local state: `min_graph_bridge_frequency >= 0.75`
- global state: `classical_states_seen == ['classical_intermediate']`
- feature scramble: supporto anti-tautologia per variante, non criterio promozionale.

## Results

Summary artifact `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`:

```json
{
  "variant_count": 11,
  "w165_closure_count": 0,
  "w165_global_only_count": 0,
  "w165_state_counts": {
    "local_only": 7,
    "neither": 4
  },
  "w20_preservation_ratio": 0.909090909
}
```

State matrix:

| variant | hopping | tilt | W16 | W16.5 | W20 |
|---|---|---:|---|---|---|
| baseline | 1,1,1 | 0.0 | neither | local_only | local_global |
| tilt_-0.070 | 1,1,1 | -0.07 | local_only | local_only | local_global |
| tilt_-0.065 | 1,1,1 | -0.065 | local_only | local_only | local_global |
| tilt_-0.062 | 1,1,1 | -0.0625 | neither | neither | local_global |
| tilt_-0.060 | 1,1,1 | -0.06 | local_only | local_only | local_global |
| tilt_-0.055 | 1,1,1 | -0.055 | neither | local_only | local_global |
| anis_x_tilt_-0.070 | 1.04,0.98,0.98 | -0.07 | neither | local_only | local_global |
| anis_x_tilt_-0.065 | 1.04,0.98,0.98 | -0.065 | neither | neither | local_global |
| anis_x_tilt_-0.062 | 1.04,0.98,0.98 | -0.0625 | neither | neither | global_only |
| anis_x_tilt_-0.060 | 1.04,0.98,0.98 | -0.06 | neither | local_only | local_global |
| anis_x_tilt_-0.055 | 1.04,0.98,0.98 | -0.055 | neither | neither | local_global |

Feature-scramble support: add-one p range `0.762886598..1.0`; raw counts are in the 11 audit JSON files under `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`. These high values do not support a promoted graph feature claim.

## Falsificazione

Promozione W16.5 falsificata su questo perimetro:

- closure count W16.5 = `0/11`;
- global-only count W16.5 = `0/11`;
- W16.5 e' `local_only` in `7/11` e `neither` in `4/11`;
- il tilt centrale `-0.0625` non chiude W16.5 ne' in isotropico ne' in anisotropico;
- l'anisotropia x a `-0.0625` rompe W20 da `local_global` a `global_only`.

Progresso preservato:

- W20 resta riferimento in `10/11`;
- il test usa un cambiamento fisico del generatore, non una coordinata derivata;
- la lacuna diventa piu' precisa: il canale W16.5 dipende dalla famiglia di perturbazione e dai semi, non solo dal valore del tilt.

## Re-discovery Audit

Baseline nota vicina: Anderson 3D mobility/localization crossover e diagnostiche spettrali Wigner/Poisson con eigenvector localization. Il Lab-specific non e' "trovare la mobility edge"; e' il contratto a due lettori local/global applicato come falsificatore di una coordinata intermedia. Il risultato resta compatibile con una transizione fisica sensibile a finite size e disorder realization; non introduce una legge nuova.

## Bicono della scoperta

- **Due radici**: W20 riferimento local_global stabile in 10/11 · W16.5 non chiude in 11/11.
- **Singolare**: onsite_tilt=-0.0625, dove la memoria E2E indicava chiusura isotropica e il nuovo stress mostra `neither` per W16.5.
- **Invariante di passaggio**: il valore del tilt non basta; la famiglia fisica e i semi fanno parte atomica del claim.
- **Campo di possibilita**: possibile costruire una matrice isotropico-vs-anisotropico con semi controllati; non-possibile promuovere W16.5 come bacino oggi.

## Verdict

CONSTRAINT / NO PROMOTION.

Il report chiude il rientro fisico B come vincolo: W16.5 resta canale sensibile, non bacino. Il prossimo ciclo deve separare tre condizioni atomiche:

1. replay isotropico con gli stessi semi del risultato E2E;
2. replay isotropico con semi indipendenti;
3. anisotropia x/y/z con gli stessi semi del replay indipendente.

Solo se la chiusura W16.5 sopravvive a questa matrice e W20 resta local_global, il candidato puo' tornare a essere bacino. Altrimenti resta gate crossing.

## Telemetria

- Nuovo artefatto principale: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`
- Nuovi audit per variante: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`
- Nuovo report locale: `tools/data/reports/agent_20260603_1948.md`
- Nessuna API pagata rilevata da `env | grep -E "ANTHROPIC_API_KEY|OPENAI_API_KEY"`.
- Verifica superficie: `python3 tools/lab_surface_invariant_check.py` fallisce con `agent_field_blocked_refs_outside_feedback:2`; non e' risolto in questo ciclo e viene registrato come residuo operativo.
- Nessun public sync, nessuna riattivazione cron, nessuna promozione fisica.

exec
/bin/bash -lc 'git status --short -- tools/data/reports/agent_20260603_1948.md tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits' in /opt/MM_D-ND
 succeeded in 0ms:
?? tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json
?? tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/
?? tools/data/reports/agent_20260603_1948.md

exec
/bin/bash -lc 'python3 tools/lab_surface_invariant_check.py' in /opt/MM_D-ND
 exited 1 in 0ms:
lab_surface_invariant_check: FAIL
failures: ['agent_field_blocked_refs_outside_feedback:2']
warnings: []

diff --git a/tools/data/reports/agent_20260603_1948.md b/tools/data/reports/agent_20260603_1948.md
new file mode 100644
index 0000000000000000000000000000000000000000..875c7febbad9f7a73314e144351d12ecbae9a864
--- /dev/null
+++ b/tools/data/reports/agent_20260603_1948.md
@@ -0,0 +1,147 @@
+# Agent Report - Anderson W16.5 Negative Tilt Basin Stress
+**Date**: 2026-06-03 19:48 UTC
+**Tension explored**: BOUNDARY / Anderson physical perturbation-null / W16.5 landing coordinate
+**verdict**: CONSTRAINT / NO PROMOTION - Il bacino W16.5 non si chiude sotto semi indipendenti nel perimetro testato. W20 resta il riferimento local_global in 10/11 varianti; l'unica rottura e' anisotropica a tilt -0.0625, dove W20 diventa global_only. Il risultato utile e' un vincolo di famiglia: la coordinata isotropica negativa va separata dall'asse anisotropico prima di ogni claim.
+observables_registry: Anderson two-reader contract via existing physical perturbation closure map
+observables_used: [transaction_state, min_graph_bridge_frequency, classical_states_seen, w20_preservation_ratio, w165_state_counts, feature_scramble_null]
+ssp_value: no
+
+**observable_contract**: claim=la coordinata W16.5 vicino a onsite_tilt=-0.0625 deve chiudere come local_global se il bacino fisico e' stabile; observable=stato local/global su W16/W16.5/W20, con W20 come riferimento; operator=Anderson 3D tight-binding con tilt onsite negativo e asse anisotropico x separato; generator=Hamiltoniano Anderson esistente, non nuova metrica derivata; denominator=11 varianti x 3 sizes L=5,6,7 x 2 semi x 7 disorder rows x k={2,3,4}; p_value_definition=feature-scramble audit di supporto per variante: raw_p=k/96, add_one_p=(k+1)/(96+1), non usato come promozione; non_possible=promuovere W16.5 come bacino fisico se non chiude local_global sotto semi indipendenti o se l'anisotropia rompe W20; not_tested=L=8, piu' reps, altre direzioni anisotropiche y/z, boundary conditions alternative.
+
+## Prima impressione
+
+La coordinata non diventa bacino. Il negativo isotropico resta un passaggio sensibile gia' visto, ma con semi nuovi non chiude W16.5; quando si aggiunge anisotropia lieve, il centro -0.0625 non apre W16.5 e indebolisce W20. Il punto-zero e' il tilt che prima sembrava landing e ora separa canale isotropico da vincolo anisotropico.
+
+## Respiro fuori-tempo
+
+- **Combo**: A11 combo + A2 confine det=-1 + Anderson mobility edge + tensione seme su perturbation/null fisico W16/W16.5/W20.
+- **Dipolo / punto-zero**: chiusura isotropica / rottura anisotropica. Punto-zero: onsite_tilt=-0.0625, dove il precedente replay aveva chiuso W16.5 e questo stress non chiude W16.5, con W20 global_only nella variante anisotropica.
+- **Piano superiore**: bicono locale/globale su famiglia fisica, non ranking numerico. Il test chiede se una coordinata resta la stessa forma quando cambia famiglia di perturbazione.
+- **Proto-ipotesi**: W16.5 non e' un ente stabile; e' un canale di passaggio che compare solo quando tilt e famiglia di semi conservano la simmetria isotropica abbastanza a lungo.
+- **Possibile/non-possibile**: possibile = usare -0.0625 come coordinata da stressare in famiglie controllate; non-possibile = promuoverla a bacino fisico finche' semi indipendenti e anisotropia non la conservano.
+- **Proiezione**: misuro solo transaction_state su W16/W16.5/W20 e preservazione W20. Non misuro nuovi assi latent graph/localization.
+- **Movimento A->M->B**: fisico A = Anderson 3D tight-binding focused; matematica M = stato local/global del reader a due lettori; fisico B tentato = bacino negativo W16.5 sotto perturbazioni fisiche. B non emerge: resta vincolo/tool/domanda.
+
+## Contaminazione cognitiva
+
+CE usata: `CE-0001` KSAR reiterative semantic kernel, richiamata in `tools/data/agent_field_live.md:957` e `:961`. Uso operativo: reiterare il kernel emerso dal ciclo E2E, non aprire dominio nuovo. Check CE eseguito con `rg -n "Archivio enzimi cognitivi|CE-" tools/data/agent_field_live.md tools/LAB_AGENT_CONTEXT.md shared_memory tools/data/reports/agent_20260531_2024.md` alle 2026-06-03 19:50 UTC; archivio presente nel campo vivo, quindi non uso `CE-none`.
+
+## Aderenza alla direzione
+
+- `relation`: `follows_direction`
+- `why`: il ciclo agisce direttamente su Anderson W16/W16.5/W20 con perturbazione/null fisico, usando lo script Hamiltoniano gia' esistente.
+- `not_drift`: non torna a percolation/logistica, non usa il report L8 bloccato come autorita', non aggiunge una metrica derivata; stressa il residuo indicato da `e2e_w165_closure_confirmation_20260529.md`.
+- `seed_residue`: resta non testato il replay a L=8 e reps=10 del risultato E2E; questo e' uno stress indipendente piu' stretto, non chiusura definitiva.
+- `return_criterion`: tornare al perimetro largo solo dopo una matrice separata isotropico-vs-anisotropico con stessi semi e almeno una direzione anisotropica alternativa.
+
+## Source Authority
+
+Autorita' viva: `tools/data/agent_field_live.md` richiede perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata.
+
+Authority ammessa come sorgente: `tools/data/reports/agent_20260529_0938.md`, status CONSTRAINT / NO PROMOTION, con W20 stabile e W16/W16.5 intermedi.
+
+Refinement usato come coordinata, non promozione: `tools/data/reports/e2e_w165_closure_confirmation_20260529.md`, che isola una chiusura W16.5 isotropica vicino a -0.0625 ma la dichiara non robusta sotto semi indipendenti piu' anisotropia.
+
+Blocco metabolizzato: `tools/data/reports/agent_20260531_2024.md` e' trattato come feedback L8, non come direzione; questo ciclo non devia verso percolation/logistica.
+
+## Claim Under Test
+
+La chiusura W16.5 vicino a onsite_tilt=-0.0625 e' un bacino fisico se resta `local_global` sotto semi indipendenti e se W20 resta il riferimento `local_global` quando si separa l'asse anisotropico.
+
+## Experiment Design
+
+Script:
+
+`python3 tools/exp_boundary_anderson_w165_closure_map.py --out tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json --sizes 5,6,7 --reps 4 --seeds 2026060319481,2026060319482 --tilts=-0.070,-0.065,-0.0625,-0.060,-0.055 --anisotropic-hopping 1.04,0.98,0.98 --scramble-trials 96`
+
+Perimetro:
+
+- disorders: `2,4,16,16.5,20,24,32`
+- focus: `W16`, `W16.5`, `W20`
+- variants: baseline + 5 tilt isotropici + 5 tilt anisotropici x
+- local state: `min_graph_bridge_frequency >= 0.75`
+- global state: `classical_states_seen == ['classical_intermediate']`
+- feature scramble: supporto anti-tautologia per variante, non criterio promozionale.
+
+## Results
+
+Summary artifact `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`:
+
+```json
+{
+  "variant_count": 11,
+  "w165_closure_count": 0,
+  "w165_global_only_count": 0,
+  "w165_state_counts": {
+    "local_only": 7,
+    "neither": 4
+  },
+  "w20_preservation_ratio": 0.909090909
+}
+```
+
+State matrix:
+
+| variant | hopping | tilt | W16 | W16.5 | W20 |
+|---|---|---:|---|---|---|
+| baseline | 1,1,1 | 0.0 | neither | local_only | local_global |
+| tilt_-0.070 | 1,1,1 | -0.07 | local_only | local_only | local_global |
+| tilt_-0.065 | 1,1,1 | -0.065 | local_only | local_only | local_global |
+| tilt_-0.062 | 1,1,1 | -0.0625 | neither | neither | local_global |
+| tilt_-0.060 | 1,1,1 | -0.06 | local_only | local_only | local_global |
+| tilt_-0.055 | 1,1,1 | -0.055 | neither | local_only | local_global |
+| anis_x_tilt_-0.070 | 1.04,0.98,0.98 | -0.07 | neither | local_only | local_global |
+| anis_x_tilt_-0.065 | 1.04,0.98,0.98 | -0.065 | neither | neither | local_global |
+| anis_x_tilt_-0.062 | 1.04,0.98,0.98 | -0.0625 | neither | neither | global_only |
+| anis_x_tilt_-0.060 | 1.04,0.98,0.98 | -0.06 | neither | local_only | local_global |
+| anis_x_tilt_-0.055 | 1.04,0.98,0.98 | -0.055 | neither | neither | local_global |
+
+Feature-scramble support: add-one p range `0.762886598..1.0`; raw counts are in the 11 audit JSON files under `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`. These high values do not support a promoted graph feature claim.
+
+## Falsificazione
+
+Promozione W16.5 falsificata su questo perimetro:
+
+- closure count W16.5 = `0/11`;
+- global-only count W16.5 = `0/11`;
+- W16.5 e' `local_only` in `7/11` e `neither` in `4/11`;
+- il tilt centrale `-0.0625` non chiude W16.5 ne' in isotropico ne' in anisotropico;
+- l'anisotropia x a `-0.0625` rompe W20 da `local_global` a `global_only`.
+
+Progresso preservato:
+
+- W20 resta riferimento in `10/11`;
+- il test usa un cambiamento fisico del generatore, non una coordinata derivata;
+- la lacuna diventa piu' precisa: il canale W16.5 dipende dalla famiglia di perturbazione e dai semi, non solo dal valore del tilt.
+
+## Re-discovery Audit
+
+Baseline nota vicina: Anderson 3D mobility/localization crossover e diagnostiche spettrali Wigner/Poisson con eigenvector localization. Il Lab-specific non e' "trovare la mobility edge"; e' il contratto a due lettori local/global applicato come falsificatore di una coordinata intermedia. Il risultato resta compatibile con una transizione fisica sensibile a finite size e disorder realization; non introduce una legge nuova.
+
+## Bicono della scoperta
+
+- **Due radici**: W20 riferimento local_global stabile in 10/11 · W16.5 non chiude in 11/11.
+- **Singolare**: onsite_tilt=-0.0625, dove la memoria E2E indicava chiusura isotropica e il nuovo stress mostra `neither` per W16.5.
+- **Invariante di passaggio**: il valore del tilt non basta; la famiglia fisica e i semi fanno parte atomica del claim.
+- **Campo di possibilita**: possibile costruire una matrice isotropico-vs-anisotropico con semi controllati; non-possibile promuovere W16.5 come bacino oggi.
+
+## Verdict
+
+CONSTRAINT / NO PROMOTION.
+
+Il report chiude il rientro fisico B come vincolo: W16.5 resta canale sensibile, non bacino. Il prossimo ciclo deve separare tre condizioni atomiche:
+
+1. replay isotropico con gli stessi semi del risultato E2E;
+2. replay isotropico con semi indipendenti;
+3. anisotropia x/y/z con gli stessi semi del replay indipendente.
+
+Solo se la chiusura W16.5 sopravvive a questa matrice e W20 resta local_global, il candidato puo' tornare a essere bacino. Altrimenti resta gate crossing.
+
+## Telemetria
+
+- Nuovo artefatto principale: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`
+- Nuovi audit per variante: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`
+- Nuovo report locale: `tools/data/reports/agent_20260603_1948.md`
+- Nessuna API pagata rilevata da `env | grep -E "ANTHROPIC_API_KEY|OPENAI_API_KEY"`.
+- Verifica superficie: `python3 tools/lab_surface_invariant_check.py` fallisce con `agent_field_blocked_refs_outside_feedback:2`; non e' risolto in questo ciclo e viene registrato come residuo operativo.
+- Nessun public sync, nessuna riattivazione cron, nessuna promozione fisica.

codex
Ruolo/funzione: AI-Lab D-ND, ciclo manuale 20260603_1948.

Fonti lette: `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, shared memory recente, report Anderson 20260529, E2E W16.5, report bloccato 20260531 come feedback L8.

Verificato:
- Esperimento eseguito con Anderson physical perturbation/null.
- Report scritto in [agent_20260603_1948.md](/opt/MM_D-ND/tools/data/reports/agent_20260603_1948.md).
- Artefatto principale: [boundary_anderson_w165_closure_map_20260603_1948.json](/opt/MM_D-ND/tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json).
- Risultato: W16.5 non chiude in `0/11`; W20 resta `local_global` in `10/11`; unica rottura W20 su anisotropia x a tilt `-0.0625`.

Non verificato:
- Replay L=8/reps=10 del risultato E2E.
- Anisotropie y/z e boundary conditions alternative.

Azioni eseguite:
- Creato report `CONSTRAINT / NO PROMOTION`.
- Salvati 11 audit per variante in `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`.

Side effect:
- Nuovi file non tracciati nel worktree.
- `python3 tools/lab_surface_invariant_check.py` fallisce ancora con `agent_field_blocked_refs_outside_feedback:2`; registrato nel report come residuo operativo.

Prossimo passo: separare replay isotropico con semi E2E, replay isotropico con semi indipendenti, e anisotropia x/y/z con semi controllati prima di riaprire qualunque claim su W16.5 come bacino.
diff --git a/tools/data/reports/agent_20260603_1948.md b/tools/data/reports/agent_20260603_1948.md
new file mode 100644
index 0000000000000000000000000000000000000000..875c7febbad9f7a73314e144351d12ecbae9a864
--- /dev/null
+++ b/tools/data/reports/agent_20260603_1948.md
@@ -0,0 +1,147 @@
+# Agent Report - Anderson W16.5 Negative Tilt Basin Stress
+**Date**: 2026-06-03 19:48 UTC
+**Tension explored**: BOUNDARY / Anderson physical perturbation-null / W16.5 landing coordinate
+**verdict**: CONSTRAINT / NO PROMOTION - Il bacino W16.5 non si chiude sotto semi indipendenti nel perimetro testato. W20 resta il riferimento local_global in 10/11 varianti; l'unica rottura e' anisotropica a tilt -0.0625, dove W20 diventa global_only. Il risultato utile e' un vincolo di famiglia: la coordinata isotropica negativa va separata dall'asse anisotropico prima di ogni claim.
+observables_registry: Anderson two-reader contract via existing physical perturbation closure map
+observables_used: [transaction_state, min_graph_bridge_frequency, classical_states_seen, w20_preservation_ratio, w165_state_counts, feature_scramble_null]
+ssp_value: no
+
+**observable_contract**: claim=la coordinata W16.5 vicino a onsite_tilt=-0.0625 deve chiudere come local_global se il bacino fisico e' stabile; observable=stato local/global su W16/W16.5/W20, con W20 come riferimento; operator=Anderson 3D tight-binding con tilt onsite negativo e asse anisotropico x separato; generator=Hamiltoniano Anderson esistente, non nuova metrica derivata; denominator=11 varianti x 3 sizes L=5,6,7 x 2 semi x 7 disorder rows x k={2,3,4}; p_value_definition=feature-scramble audit di supporto per variante: raw_p=k/96, add_one_p=(k+1)/(96+1), non usato come promozione; non_possible=promuovere W16.5 come bacino fisico se non chiude local_global sotto semi indipendenti o se l'anisotropia rompe W20; not_tested=L=8, piu' reps, altre direzioni anisotropiche y/z, boundary conditions alternative.
+
+## Prima impressione
+
+La coordinata non diventa bacino. Il negativo isotropico resta un passaggio sensibile gia' visto, ma con semi nuovi non chiude W16.5; quando si aggiunge anisotropia lieve, il centro -0.0625 non apre W16.5 e indebolisce W20. Il punto-zero e' il tilt che prima sembrava landing e ora separa canale isotropico da vincolo anisotropico.
+
+## Respiro fuori-tempo
+
+- **Combo**: A11 combo + A2 confine det=-1 + Anderson mobility edge + tensione seme su perturbation/null fisico W16/W16.5/W20.
+- **Dipolo / punto-zero**: chiusura isotropica / rottura anisotropica. Punto-zero: onsite_tilt=-0.0625, dove il precedente replay aveva chiuso W16.5 e questo stress non chiude W16.5, con W20 global_only nella variante anisotropica.
+- **Piano superiore**: bicono locale/globale su famiglia fisica, non ranking numerico. Il test chiede se una coordinata resta la stessa forma quando cambia famiglia di perturbazione.
+- **Proto-ipotesi**: W16.5 non e' un ente stabile; e' un canale di passaggio che compare solo quando tilt e famiglia di semi conservano la simmetria isotropica abbastanza a lungo.
+- **Possibile/non-possibile**: possibile = usare -0.0625 come coordinata da stressare in famiglie controllate; non-possibile = promuoverla a bacino fisico finche' semi indipendenti e anisotropia non la conservano.
+- **Proiezione**: misuro solo transaction_state su W16/W16.5/W20 e preservazione W20. Non misuro nuovi assi latent graph/localization.
+- **Movimento A->M->B**: fisico A = Anderson 3D tight-binding focused; matematica M = stato local/global del reader a due lettori; fisico B tentato = bacino negativo W16.5 sotto perturbazioni fisiche. B non emerge: resta vincolo/tool/domanda.
+
+## Contaminazione cognitiva
+
+CE usata: `CE-0001` KSAR reiterative semantic kernel, richiamata in `tools/data/agent_field_live.md:957` e `:961`. Uso operativo: reiterare il kernel emerso dal ciclo E2E, non aprire dominio nuovo. Check CE eseguito con `rg -n "Archivio enzimi cognitivi|CE-" tools/data/agent_field_live.md tools/LAB_AGENT_CONTEXT.md shared_memory tools/data/reports/agent_20260531_2024.md` alle 2026-06-03 19:50 UTC; archivio presente nel campo vivo, quindi non uso `CE-none`.
+
+## Aderenza alla direzione
+
+- `relation`: `follows_direction`
+- `why`: il ciclo agisce direttamente su Anderson W16/W16.5/W20 con perturbazione/null fisico, usando lo script Hamiltoniano gia' esistente.
+- `not_drift`: non torna a percolation/logistica, non usa il report L8 bloccato come autorita', non aggiunge una metrica derivata; stressa il residuo indicato da `e2e_w165_closure_confirmation_20260529.md`.
+- `seed_residue`: resta non testato il replay a L=8 e reps=10 del risultato E2E; questo e' uno stress indipendente piu' stretto, non chiusura definitiva.
+- `return_criterion`: tornare al perimetro largo solo dopo una matrice separata isotropico-vs-anisotropico con stessi semi e almeno una direzione anisotropica alternativa.
+
+## Source Authority
+
+Autorita' viva: `tools/data/agent_field_live.md` richiede perturbation/null fisico Anderson su W16/W16.5/W20, non altra metrica derivata.
+
+Authority ammessa come sorgente: `tools/data/reports/agent_20260529_0938.md`, status CONSTRAINT / NO PROMOTION, con W20 stabile e W16/W16.5 intermedi.
+
+Refinement usato come coordinata, non promozione: `tools/data/reports/e2e_w165_closure_confirmation_20260529.md`, che isola una chiusura W16.5 isotropica vicino a -0.0625 ma la dichiara non robusta sotto semi indipendenti piu' anisotropia.
+
+Blocco metabolizzato: `tools/data/reports/agent_20260531_2024.md` e' trattato come feedback L8, non come direzione; questo ciclo non devia verso percolation/logistica.
+
+## Claim Under Test
+
+La chiusura W16.5 vicino a onsite_tilt=-0.0625 e' un bacino fisico se resta `local_global` sotto semi indipendenti e se W20 resta il riferimento `local_global` quando si separa l'asse anisotropico.
+
+## Experiment Design
+
+Script:
+
+`python3 tools/exp_boundary_anderson_w165_closure_map.py --out tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json --sizes 5,6,7 --reps 4 --seeds 2026060319481,2026060319482 --tilts=-0.070,-0.065,-0.0625,-0.060,-0.055 --anisotropic-hopping 1.04,0.98,0.98 --scramble-trials 96`
+
+Perimetro:
+
+- disorders: `2,4,16,16.5,20,24,32`
+- focus: `W16`, `W16.5`, `W20`
+- variants: baseline + 5 tilt isotropici + 5 tilt anisotropici x
+- local state: `min_graph_bridge_frequency >= 0.75`
+- global state: `classical_states_seen == ['classical_intermediate']`
+- feature scramble: supporto anti-tautologia per variante, non criterio promozionale.
+
+## Results
+
+Summary artifact `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`:
+
+```json
+{
+  "variant_count": 11,
+  "w165_closure_count": 0,
+  "w165_global_only_count": 0,
+  "w165_state_counts": {
+    "local_only": 7,
+    "neither": 4
+  },
+  "w20_preservation_ratio": 0.909090909
+}
+```
+
+State matrix:
+
+| variant | hopping | tilt | W16 | W16.5 | W20 |
+|---|---|---:|---|---|---|
+| baseline | 1,1,1 | 0.0 | neither | local_only | local_global |
+| tilt_-0.070 | 1,1,1 | -0.07 | local_only | local_only | local_global |
+| tilt_-0.065 | 1,1,1 | -0.065 | local_only | local_only | local_global |
+| tilt_-0.062 | 1,1,1 | -0.0625 | neither | neither | local_global |
+| tilt_-0.060 | 1,1,1 | -0.06 | local_only | local_only | local_global |
+| tilt_-0.055 | 1,1,1 | -0.055 | neither | local_only | local_global |
+| anis_x_tilt_-0.070 | 1.04,0.98,0.98 | -0.07 | neither | local_only | local_global |
+| anis_x_tilt_-0.065 | 1.04,0.98,0.98 | -0.065 | neither | neither | local_global |
+| anis_x_tilt_-0.062 | 1.04,0.98,0.98 | -0.0625 | neither | neither | global_only |
+| anis_x_tilt_-0.060 | 1.04,0.98,0.98 | -0.06 | neither | local_only | local_global |
+| anis_x_tilt_-0.055 | 1.04,0.98,0.98 | -0.055 | neither | neither | local_global |
+
+Feature-scramble support: add-one p range `0.762886598..1.0`; raw counts are in the 11 audit JSON files under `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`. These high values do not support a promoted graph feature claim.
+
+## Falsificazione
+
+Promozione W16.5 falsificata su questo perimetro:
+
+- closure count W16.5 = `0/11`;
+- global-only count W16.5 = `0/11`;
+- W16.5 e' `local_only` in `7/11` e `neither` in `4/11`;
+- il tilt centrale `-0.0625` non chiude W16.5 ne' in isotropico ne' in anisotropico;
+- l'anisotropia x a `-0.0625` rompe W20 da `local_global` a `global_only`.
+
+Progresso preservato:
+
+- W20 resta riferimento in `10/11`;
+- il test usa un cambiamento fisico del generatore, non una coordinata derivata;
+- la lacuna diventa piu' precisa: il canale W16.5 dipende dalla famiglia di perturbazione e dai semi, non solo dal valore del tilt.
+
+## Re-discovery Audit
+
+Baseline nota vicina: Anderson 3D mobility/localization crossover e diagnostiche spettrali Wigner/Poisson con eigenvector localization. Il Lab-specific non e' "trovare la mobility edge"; e' il contratto a due lettori local/global applicato come falsificatore di una coordinata intermedia. Il risultato resta compatibile con una transizione fisica sensibile a finite size e disorder realization; non introduce una legge nuova.
+
+## Bicono della scoperta
+
+- **Due radici**: W20 riferimento local_global stabile in 10/11 · W16.5 non chiude in 11/11.
+- **Singolare**: onsite_tilt=-0.0625, dove la memoria E2E indicava chiusura isotropica e il nuovo stress mostra `neither` per W16.5.
+- **Invariante di passaggio**: il valore del tilt non basta; la famiglia fisica e i semi fanno parte atomica del claim.
+- **Campo di possibilita**: possibile costruire una matrice isotropico-vs-anisotropico con semi controllati; non-possibile promuovere W16.5 come bacino oggi.
+
+## Verdict
+
+CONSTRAINT / NO PROMOTION.
+
+Il report chiude il rientro fisico B come vincolo: W16.5 resta canale sensibile, non bacino. Il prossimo ciclo deve separare tre condizioni atomiche:
+
+1. replay isotropico con gli stessi semi del risultato E2E;
+2. replay isotropico con semi indipendenti;
+3. anisotropia x/y/z con gli stessi semi del replay indipendente.
+
+Solo se la chiusura W16.5 sopravvive a questa matrice e W20 resta local_global, il candidato puo' tornare a essere bacino. Altrimenti resta gate crossing.
+
+## Telemetria
+
+- Nuovo artefatto principale: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json`
+- Nuovi audit per variante: `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`
+- Nuovo report locale: `tools/data/reports/agent_20260603_1948.md`
+- Nessuna API pagata rilevata da `env | grep -E "ANTHROPIC_API_KEY|OPENAI_API_KEY"`.
+- Verifica superficie: `python3 tools/lab_surface_invariant_check.py` fallisce con `agent_field_blocked_refs_outside_feedback:2`; non e' risolto in questo ciclo e viene registrato come residuo operativo.
+- Nessun public sync, nessuna riattivazione cron, nessuna promozione fisica.

tokens used
89,380
Ruolo/funzione: AI-Lab D-ND, ciclo manuale 20260603_1948.

Fonti lette: `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, shared memory recente, report Anderson 20260529, E2E W16.5, report bloccato 20260531 come feedback L8.

Verificato:
- Esperimento eseguito con Anderson physical perturbation/null.
- Report scritto in [agent_20260603_1948.md](/opt/MM_D-ND/tools/data/reports/agent_20260603_1948.md).
- Artefatto principale: [boundary_anderson_w165_closure_map_20260603_1948.json](/opt/MM_D-ND/tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948.json).
- Risultato: W16.5 non chiude in `0/11`; W20 resta `local_global` in `10/11`; unica rottura W20 su anisotropia x a tilt `-0.0625`.

Non verificato:
- Replay L=8/reps=10 del risultato E2E.
- Anisotropie y/z e boundary conditions alternative.

Azioni eseguite:
- Creato report `CONSTRAINT / NO PROMOTION`.
- Salvati 11 audit per variante in `tools/data/landing/boundary_anderson_w165_closure_map_20260603_1948_audits/`.

Side effect:
- Nuovi file non tracciati nel worktree.
- `python3 tools/lab_surface_invariant_check.py` fallisce ancora con `agent_field_blocked_refs_outside_feedback:2`; registrato nel report come residuo operativo.

Prossimo passo: separare replay isotropico con semi E2E, replay isotropico con semi indipendenti, e anisotropia x/y/z con semi controllati prima di riaprire qualunque claim su W16.5 come bacino.
