# Agent Report — Endpoint Stability Filter
**Date**: 2026-05-16 10:45
**Piano**: 129
**Tension explored**: BOUNDARY (0.8)
**verdict**: CONSTRAINT - GUE e Poisson sono endpoint-stable nel lettore calibrato su 36/36 righe di stress, ma il label-permutation null resta troppo permissivo (`combined p=0.124031`; 15/128 null arrivano a 36/36). Il filtro endpoint e' osservativamente utile, non ancora specifico abbastanza per riaprire RP come terzo incluso.
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]
**observable_contract**: claim=GUE/Poisson endpoints sono filtro valido del boundary se entrambi i poli restano stabili sotto stress reader/window/size/seed con classificatore calibrato; observable=`endpoint_stable` per riga sorgente e margine centroidale per reader; operator=calibrazione centroidi endpoint su controlli GUE/Poisson e stress su seed indipendenti; generator=matrici GUE e gap Poisson esponenziali; denominator=2 domini x 3 size x 6 test seed = 36 source rows, ognuna letta da 5 reader; non_possible=il boundary-terzo incluso non riapre se un endpoint cade o se il null di etichetta raggiunge la stabilita' osservata; not_tested=RP residue, Anderson 3D, spettri sperimentali, limite N infinito, prova analitica di universalita.

## Respiro fuori-tempo
- **Combo**: A9 terzo incluso + QxG continuo/discreto + nodo BOUNDARY del grafo + topologia assiomatica del bordo.
- **Dipolo / punto-zero**: polo GUE / polo Poisson. Punto-zero: la riga di gap prima che un reader la classifichi.
- **Piano superiore**: topologia assiomatica del bordo. Il filtro endpoint e' boundary operator: decide se i poli esistono prima del bordo intermedio.
- **Operatori laterali scelti**: boundary operator e parallel transport. Il primo testa se il bordo ha due estremi; il secondo testa se l'identita' endpoint si trasporta fra reader.
- **Contaminazione cognitiva**: CE-0019 usata per imporre respiro pre-esperimento; CE-0001/KSAR usata per reiterare il vincolo 10:31 senza cercare una nuova lambda RP.
- **Proto-ipotesi**: un confine-terzo incluso non puo' essere misurato finche' i due endpoint non sono invarianti sotto il lettore che poi verra' usato sul bordo.
- **Possibile/non-possibile**: possibile = usare endpoint GUE/Poisson come filtro preliminare; non-possibile = promuovere il filtro se il null di etichetta ricostruisce la stessa stabilita'.
- **Proiezione**: misuro `endpoint_stable` con classificatore centroidale su feature canoniche; il claim cade se uno dei 5 reader rompe l'endpoint o se il null uguaglia l'osservato.
- **Movimento A->M->B**: fisico A = crossover spettrale GUE/Poisson/RP; matematica M = classificatore endpoint row-aligned sui vettori osservabili; fisico B non emerge. Il ciclo consegna un vincolo sul lettore, non un rimbalzo fisico.

## Aderenza alla direzione
- `relation`: `follows_direction`
- `why`: esegue la direzione valutatore 10:31: testare prima la stabilita' endpoint GUE/Poisson come filtro del confine-terzo incluso.
- `not_drift`: non torna a V_c, phi/Sturmian, fit locali o creste RP; RP resta non testato finche' il filtro endpoint non chiude anche contro null.

## Re-discovery audit
- **Baseline noto piu vicino**: statistiche GUE/Poisson con spacing ratio, Brody interpolation e Berry-Robnik-like mixture.
- **Cosa assorbe il baseline**: la separazione osservata tra poli GUE e Poisson nelle feature spettrali canoniche.
- **Cosa resta Lab-specific**: il contratto operativo che richiede endpoint stabili per tutti i reader prima di leggere il terzo incluso.
- **Separazione**: `two_reader_boundary_confirmed=[]`; `graph_only_residue=0`; `scope_change_declared=endpoint_filter_before_boundary`; `graph_baseline_audit=label_permutation_null`.

## Claim Under Test
> GUE e Poisson possono fungere da filtro endpoint del boundary solo se ogni riga stress resta endpoint-stable in tutti i reader e il label-null non ricostruisce la stessa stabilita'.

## Question
Il lettore che ha rotto GUE nel ciclo 10:31 puo' essere riparato regressivamente calibrando gli endpoint, oppure il filtro e' ancora assorbito dal null di etichetta?

## Ritorno fisico
- **Punto fisico sorgente**: crossover spettrale GUE/Poisson/Rosenzweig-Porter.
- **Attraversamento matematico**: centroidi endpoint in spazio osservabile canonico con margine preregistrato.
- **Punto fisico di ritorno**: assente come nuova misura fisica; il ritorno e' un vincolo sul protocollo che potra' essere applicato a RP o Anderson 3D dopo chiusura null.
- **Controllo concretezza**: nessun setup fisico nuovo viene promosso.
- **Relazione nuova**: endpoint stability precede boundary residue.
- **Osservabile/test fisico possibile**: applicare lo stesso filtro a spettri RP/Anderson solo dopo null piu stretto.
- **Se fallisce**: `ritorno_fisico_assente`: il ciclo resta filtro metodologico.

## Experiment Design
- **Script nuovo**: `tools/exp_endpoint_stability_filter.py`.
- **Run**: `python tools/exp_endpoint_stability_filter.py --out tools/data/endpoint_stability_filter_20260516_1045.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 reader predicono il vero endpoint con `centroid_margin >= 0.15`.
- **Null**: 128 permutazioni delle etichette di calibrazione; p-value = frazione null con successi endpoint almeno pari all'osservato.

## Results
| group | observed_successes | null_successes | p-value | Wilson 95% | min margin | median margin | lettura |
|---|---:|---:|---:|---|---:|---:|---|
| GUE endpoint | 18/18 | 774/2304 | 0.341085 | [0.824121, 1.0] | 0.655482 | 1.552507 | endpoint stabile, null non chiuso |
| Poisson endpoint | 18/18 | 774/2304 | 0.341085 | [0.824121, 1.0] | 0.929876 | 1.685385 | endpoint stabile, null non chiuso |
| Combined | 36/36 | 1452/4608 | 0.124031 | n/a | 0.655482 | n/a | filtro utile, specificita' insufficiente |

### Null Distribution
| null_success_count | trials |
|---:|---:|
| 0 | 85 |
| 27 | 1 |
| 28 | 4 |
| 29 | 2 |
| 31 | 4 |
| 33 | 1 |
| 34 | 2 |
| 35 | 14 |
| 36 | 15 |

## Key Findings
1. Verificato: il lettore endpoint calibrato non rompe GUE. Le 18 righe GUE test hanno 5/5 reader pass e `endpoint_stable=True`.
2. Verificato: Poisson resta endpoint simmetrico nello stesso contratto. Le 18 righe Poisson test hanno 5/5 reader pass.
3. Verificato: il null di etichetta non e' abbastanza severo. 15/128 null raggiungono 36/36 e il p-value combinato resta 0.124031.
4. Inferito dal perimetro: il nodo regressivo non e' piu' la clausola classica `q AND w`, ma la specificita' del controllo di calibrazione. Serve un null che rompa la relazione reader-feature senza lasciare centroidi spurii separanti.

## Verdict
CONSTRAINT

GUE/Poisson sono endpoint-stable nel lettore calibrato, ma il filtro non supera ancora il null di etichetta. La prossima mossa non deve entrare in RP: deve stringere il null endpoint, per esempio con holdout per reader, bootstrap centroidale bilanciato o feature-scramble row-aligned, e richiedere `p <= 0.05` prima del boundary.

## Bicono della scoperta
- **Due radici**: stabilita' osservata degli endpoint; specificita' insufficiente del null.
- **Singolare**: vettore osservabile della riga prima del nome GUE/Poisson.
- **Invariante di passaggio**: stesso denominatore source row x reader per osservato e controllo.
- **Campo di possibilita**: possibile = usare un filtro endpoint calibrato come preflight; non-possibile = dichiarare terzo incluso RP con p endpoint non chiuso.

## Consecutio
Il filtro endpoint ha forma ma non chiusura. Il prossimo ciclo deve riparare il null, non aumentare lambda, size o domini. Quando il null non raggiunge piu' 36/36 e gli endpoint restano 36/36 con `p<=0.05`, RP torna falsificabile come terzo incluso.

## Ricadute pratiche
ssp_value: yes. `tools/exp_endpoint_stability_filter.py` diventa preflight riusabile per non far entrare un boundary test quando i poli o il null endpoint non sono chiusi.

## 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_stability_filter.py` completato.
- Run completato: `tools/data/endpoint_stability_filter_20260516_1045.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_stability_filter.py`
- Data: `tools/data/endpoint_stability_filter_20260516_1045.json`
- Report: `tools/data/reports/agent_20260516_1045.md`
