# Agent Report — Endpoint Feature-Scramble Null
**Date**: 2026-05-16 10:58
**Piano**: 129
**Tension explored**: BOUNDARY (0.8)
**verdict**: CONSTRAINT - Il filtro endpoint GUE/Poisson resta completo su 36/36 righe e supera il nuovo feature-scramble null row-aligned (`raw_p=0/512=0.0`, `add_one_p=1/513=0.001949318`). Il label-permutation null resta permissivo (`raw_p=15/128=0.1171875`, `add_one_p=16/129=0.124031008`). Il nodo regressivo non e' l'endpoint reader, ma quale null e' legittimo per sfidare il lettore.
observables_registry: 1.0.0-2026-05-06
observables_used: [SR, SR2, L1, L2, triple_var, brody_q, berry_robnick_like_gue_weight, endpoint_reader_pass, endpoint_stable, centroid_margin, label_permutation_null_counts, feature_scramble_null_counts, raw_p, add_one_p]
**observable_contract**: claim=GUE/Poisson endpoint filter e' specifico se la stabilita' osservata resta completa e null feature-scramble che preservano marginali per reader non ricostruiscono la stabilita' completa; observable=`endpoint_stable` per source row, margine centroidale per reader, distribuzione null feature-scramble; operator=centroidi endpoint calibrati una volta su GUE/Poisson, poi scoring di test rows vere e feature-scrambled row-aligned; generator=matrici GUE e gap Poisson esponenziali; denominator=2 domini x 3 size x 6 test seed = 36 source rows, ogni source row richiede 5/5 reader pass; non_possible=filtro endpoint specifico se il feature-scramble null raggiunge 36/36; not_tested=RP residue, Anderson 3D, spettri sperimentali, limite N infinito, universalita analitica.

## Respiro fuori-tempo
- **Combo**: A9 terzo incluso + QxG continuo/discreto + nodo BOUNDARY del grafo + tensione seme "8 domini GUE, 5 Poisson".
- **Dipolo / punto-zero**: endpoint osservato / endpoint ricostruito dal null. Punto-zero: il vettore osservabile prima che la relazione multivariata fra feature decida il polo.
- **Piano superiore**: topologia assiomatica del bordo. Il null e' boundary operator: separa polo reale da polo generato da marginali disaccoppiate.
- **Operatori laterali scelti**: boundary operator e parallel transport. Il primo taglia il perimetro endpoint/null; il secondo verifica se l'identita' endpoint si trasporta attraverso reader senza dipendere da una singola feature.
- **Contaminazione cognitiva**: CE-0019 metabolizzata come combo prima della misura; CE-0001/KSAR usata per reiterare il vincolo 10:45 senza tornare a RP; CE-0117 usata come cascata della possibilita': il risultato apre solo se il null non ricostruisce il polo.
- **Proto-ipotesi**: un filtro endpoint e' utilizzabile prima del terzo incluso quando la stabilita' nasce dall'accoppiamento row-level delle feature, non dalle marginali isolate.
- **Possibile/non-possibile**: possibile = riaprire RP come boundary test dopo endpoint chiuso contro null row-aligned; non-possibile = promuovere l'endpoint se un null che conserva marginali per reader arriva a 36/36.
- **Proiezione**: misuro `endpoint_stable` sulle stesse 36 source rows e confronto due null: label permutation per continuita' e feature-scramble per specificita' row-aligned.
- **Movimento A->M->B**: fisico A = crossover spettrale GUE/Poisson/RP; matematica M = vettore osservabile multivariato con null che rompe l'accoppiamento feature-riga; fisico B non emerge. Il ciclo consegna un gate metodologico prima del ritorno a RP/Anderson.

## Aderenza alla direzione
- `relation`: `follows_direction`
- `why`: segue la direzione valutatore: testare prima la stabilita' endpoint GUE/Poisson come filtro del confine-terzo incluso e riparare il null che nel ciclo 10:45 lasciava il filtro aperto.
- `not_drift`: non torna a phi/Sturmian, V_c, lambda RP o residui graph-only; misura solo endpoint GUE/Poisson e null sullo stesso denominatore.
- `seed_residue`: restano non testati gli 8 domini GUE / 5 Poisson originali come perimetro largo e il terzo incluso RP.
- `why_not_drift`: il sotto-perimetro e' regressivo perche' chiude il prerequisito endpoint prima del boundary, non sostituisce il boundary con un deposito familiare.

## Re-discovery audit
- **Baseline noto piu vicino**: statistiche spettrali GUE/Poisson, spacing ratio, Brody interpolation, Berry-Robnik-like mixture, Rosenzweig-Porter come crossover.
- **Cosa assorbe il baseline**: la separazione dei poli GUE e Poisson nelle feature canoniche.
- **Cosa resta Lab-specific**: il contratto operativo: prima di leggere il terzo incluso, il filtro endpoint deve restare completo contro null row-aligned che sfidano il lettore.
- **Separazione**: `two_reader_boundary_confirmed=[]`; `graph_only_residue=0`; `scope_change_declared=endpoint_null_tightening_before_boundary`; `graph_baseline_audit=non_applicabile:no_graph_reader`.

## Claim Under Test
> GUE e Poisson sono endpoint validi per il filtro boundary se 36/36 source rows restano endpoint-stable e un feature-scramble null row-aligned non ricostruisce 36/36.

## Question
Il filtro endpoint 10:45 era assorbito solo dal label-null permissivo, oppure anche un null che preserva le marginali per reader puo' ricostruire la stabilita' completa?

## Ritorno fisico
- **Punto fisico sorgente**: transizione spettrale GUE/Poisson/Rosenzweig-Porter.
- **Attraversamento matematico**: classificatore centroidale in spazio osservabile e null feature-scramble che preserva marginali ma rompe accoppiamento row-level.
- **Punto fisico di ritorno**: nessun nuovo setup fisico; il ritorno e' il protocollo per riaprire RP o Anderson 3D solo dopo endpoint-null chiuso.
- **Controllo concretezza**: non viene promosso un fenomeno fisico nuovo.
- **Relazione nuova**: endpoint stability richiede un null che rompa la relazione multivariata, non solo una permutazione di label.
- **Osservabile/test fisico possibile**: applicare lo stesso endpoint-null gate a RP/Anderson e chiedere se il boundary intermedio batte null row-aligned dopo endpoint chiuso.
- **Se fallisce**: `ritorno_fisico_assente`; resta gate metodologico.

## Experiment Design
- **Script nuovo**: `tools/exp_endpoint_feature_scramble_null.py`.
- **Run**: `python tools/exp_endpoint_feature_scramble_null.py --out tools/data/endpoint_feature_scramble_null_20260516_1058.json`.
- **Perimetro**: size `128/192/256`; 4 seed di calibrazione; 6 seed test; 6 repliche per riga.
- **Reader**: `global_mean`, `exact_local:w9`, `exact_local:w12`, `odd_coerced:w9`, `odd_coerced:w12`.
- **Soglia preregistrata**: `endpoint_stable=True` se tutti i 5 reader predicono il vero endpoint con `centroid_margin >= 0.15`.
- **Null 1, continuita'**: 128 label permutations sulle righe di calibrazione. P-value right-tail: `raw_p=k/N`, `add_one_p=(k+1)/(N+1)`, con `k=null_count >= observed_count`.
- **Null 2, specificita'**: 512 feature-scramble trial; dentro ogni reader, ogni feature viene permutata indipendentemente fra test rows. Preserva marginali per feature/reader e rompe l'accoppiamento multivariato source row.
- **Contratto osservabile-operatore**: claim, osservabile, operatore, generatore, denominatore e non-possibile sono quelli dell'header; `gap_ratio` e RP residue non sono testati.

## Results
| group | observed_successes | min margin | median margin | lettura |
|---|---:|---:|---:|---|
| GUE endpoint | 18/18 | 0.655482 | 1.552507 | endpoint stabile |
| Poisson endpoint | 18/18 | 0.929876 | 1.685385 | endpoint stabile |
| Combined | 36/36 | 0.655482 | n/a | endpoint filter completo |

| null | k/N >= 36 | raw_p | add_one_p | max null count | mean null count | histogram |
|---|---:|---:|---:|---:|---:|---|
| label permutation | 15/128 | 0.1171875 | 0.124031008 | 36 | 11.343750 | {0:85, 27:1, 28:4, 29:2, 31:4, 33:1, 34:2, 35:14, 36:15} |
| feature scramble row-aligned | 0/512 | 0.0000000 | 0.001949318 | 2 | 0.312500 | {0:372, 1:120, 2:20} |

## Key Findings
1. Verificato: il filtro endpoint osservato resta completo. GUE = 18/18, Poisson = 18/18, combined = 36/36; ogni source row ha 5/5 reader pass.
2. Verificato: il label-permutation null replica il problema 10:45. 15/128 trial arrivano a 36/36; `raw_p=0.1171875`, `add_one_p=0.124031008`.
3. Verificato: il feature-scramble null non ricostruisce il filtro. 0/512 trial arrivano a 36/36; il massimo null e' 2/36.
4. Inferito dal perimetro: la specificita' vive nell'accoppiamento multivariato row-level delle feature, non nelle marginali isolate. Il label-null e' troppo grossolano per questo lettore perche' puo' creare centroidi spurii separanti.

## Verdict
CONSTRAINT

Il filtro endpoint GUE/Poisson e' chiuso contro feature-scramble row-aligned nel perimetro 36 source rows / 5 reader. Non diventa scoperta fisica: diventa preflight valido per riaprire il boundary test. La prossima mossa puo' tornare a RP solo mantenendo questo gate: endpoint observed 36/36, feature-scramble `add_one_p<=0.05`, poi boundary residue contro null row-aligned.

## Bicono della scoperta
- **Due radici**: endpoint reale multivariato; endpoint spurio da marginali disaccoppiate.
- **Singolare**: source row prima della scomposizione in feature indipendenti.
- **Invariante di passaggio**: stesso denominatore source row x reader per osservato e null.
- **Campo di possibilita**: possibile = usare il filtro endpoint come gate prima di RP; non-possibile = promuovere endpoint se il null feature-scramble raggiunge la stabilita' completa.

## Consecutio
Il boundary puo' rientrare nel ciclo successivo solo dopo questo preflight: stesso lettore endpoint, stesso p-value dichiarato (`raw_p` e `add_one_p`), e null row-aligned separato dal label permutation. Se RP torna, non deve cercare una lambda; deve chiedere se una riga intermedia batte i null dopo endpoint chiuso.

## Ricadute pratiche
ssp_value: yes. `tools/exp_endpoint_feature_scramble_null.py` diventa preflight riusabile per distinguere null permissivi da null che rompono l'accoppiamento row-level prima di testare un terzo incluso.

## Telemetria
- No API paid run: `ANTHROPIC_API_KEY` e `OPENAI_API_KEY` non presenti nell'ambiente.
- `python tools/dnd_scenario.py --best` eseguito: massimo discriminante locale su TRASCENDENZA_LIMITE; direzione BOUNDARY seguita per contratto vivo.
- `python -m py_compile tools/exp_endpoint_feature_scramble_null.py` completato.
- Run completato: `tools/data/endpoint_feature_scramble_null_20260516_1058.json`.
- Worktree gia dirty prima del ciclo; ignorate modifiche non correlate.
- Nessun update del seme.
- Nessuna promozione e nessun public sync.

## Files
- Script: `tools/exp_endpoint_feature_scramble_null.py`
- Data: `tools/data/endpoint_feature_scramble_null_20260516_1058.json`
- Report: `tools/data/reports/agent_20260516_1058.md`
