# Agent Report - Graph-Only Residue Label Null Audit
**Date**: 2026-05-16 12:06
**Piano**: 134
**Tension explored**: BOUNDARY (0.8)
**verdict**: CONSTRAINT - I due residui graph-only nominati dal seme (`logistica_biforcazione_var_3.5699`, `percolation`) sono osservati `27/27` nello stesso reader 13-righe, ma il null label-count-preserving li ricostruisce spesso: `223/512` per logistica e `270/512` per percolation. Le label sorgente non sopravvivono come costo: entrambi restano `27/27` anche con label scambiata.
observables_registry: 1.0.0-2026-05-06 via boundary_graph_curvature_gate
observables_used: [target_graph_bridge_hits, target_graph_bridge_frequency, label_count_preserving_null_hits, source_label_survival_state, any_graph_only_stable_under_null, classical_audit_state]
**observable_contract**: claim=i residui graph-only portano costo di label sorgente solo se il loro `27/27` e raro sotto permutazioni label-count-preserving 8/5 e non persiste con label scambiata; observable=hit count del target su 27 perturbazioni graph-reader; operator=null label-count-preserving sulle 13 righe BOUNDARY; generator=feature row-local fissate dal graph reader, solo `source_domain_type` permutato; denominator=13 righe, 27 letture, `512` permutazioni; p_value_definition=right-tail `raw_p=k/N`, `add_one_p=(k+1)/(N+1)`, con `k` = trial null con `target_hits >= observed_target_hits`; non_possible=chiamare i residui graph-only Lab-specific se `27/27` viene ricostruito frequentemente o con label sorgente scambiata; not_tested=nuovo grafo, dinamica fisica sorgente, scaling asintotico, promozione a due lettori.

## Respiro fuori-tempo
- **Combo**: A9 terzo incluso + A11 combo + BOUNDARY `8 GUE / 5 Poisson` + grafo conoscenza Q/G come lettore + residui graph-only nominati dal seme.
- **Dipolo / punto-zero**: residuo graph-only / ricostruzione label-null. Punto-zero: la riga prima che la label GUE/Poisson orienti centroidi e cross-neighbor.
- **Piano superiore**: topologia del grafo row-aligned; il costo vive nel fatto che il nome resta o cade quando il perimetro 8/5 viene preservato ma riassegnato.
- **Operatori laterali scelti**: graph spectrum/kNN boundary, label-count-preserving null, degree/cluster boundary stability come baseline grafica.
- **Contaminazione cognitiva**: CE-0001/KSAR usata come reiterazione dello stesso kernel 11:48 sui residui nominati; CE-none per altri adapter, perche il ciclo doveva chiudere comparabilita N=512 e non aprire nuovo dominio.
- **Proto-ipotesi**: un residuo graph-only e strutturale solo se il suo bridge status costa piu del perimetro label-count-preserving; se il null lo ricrea, il residuo resta proprieta del reader.
- **Proiezione**: tenere fisse le feature delle 13 righe, permutare solo le label preservando `8/5`, misurare se i due target restano `27/27`.
- **Movimento A->M->B**: fisico A = confine GUE/Poisson nei domini del seme; matematica M = null di label su grafo kNN; fisico B = ritorno verso percolazione/logistica come fenomeni fisici. Il ritorno fisico fallisce in questo ciclo: resta vincolo sul reader.

## Aderenza alla direzione
- `relation`: `follows_direction`
- `why`: il ciclo testa esattamente se i residui graph-only `logistica_biforcazione_var_3.5699` e `percolation` e le label sorgente sopravvivono a null che preservano il perimetro 8 GUE / 5 Poisson.
- `not_drift`: non torna a Sturmian, phi, V_c, fit locali o candidato prime; usa lo stesso N=512 del null label-count-preserving precedente.
- `seed_residue`: resta non testato un null fisico interno alle dinamiche percolation/logistica; qui il perimetro e solo graph-reader/label.

## Re-discovery audit
- **Baseline noto piu vicino**: kNN stability, label permutation null, cluster-boundary stability, graph rewiring; per il contesto fisico restano Brody/Berry-Robnik/Rosenzweig-Porter come baseline di crossover spettrale.
- **Cosa assorbe il baseline**: righe stabili possono comparire quando le label definiscono centroidi e cross-neighbor del grafo; non basta la stabilita `27/27`.
- **Cosa resta Lab-specific**: il contratto null-first che impedisce di sommare graph-only residue al boundary a due lettori.
- `two_reader_boundary_confirmed`: non misurato come nuovo conteggio; i target sono entrambi `graph_only_bridge`, non due lettori.
- `graph_only_residue`: `logistica_biforcazione_var_3.5699:cycle_13`, `percolation:cycle_9`.
- `scope_change_declared`: nessun cambio di scope; 13 righe, 8 GUE / 5 Poisson.
- `graph_baseline_audit`: label-count-preserving permutation null sullo stesso graph reader.

## Claim Under Test
> Nel perimetro `8 GUE / 5 Poisson`, i residui graph-only `logistica_biforcazione_var_3.5699` e `percolation` portano costo strutturale solo se il loro `27/27` non viene ricostruito frequentemente da permutazioni delle label che preservano il conteggio 8/5.

## Question
I residui graph-only sono righe del confine, oppure il reader li ricrea quando il perimetro resta 8/5 ma le label sorgente cambiano?

## Ritorno fisico
- **Punto fisico sorgente**: confine GUE/Poisson su logistica e percolation nel denominatore BOUNDARY.
- **Attraversamento matematico**: grafo kNN in feature canonical+rigidity+shuffle-z con null label-count-preserving.
- **Punto fisico di ritorno**: dinamica logistica vicino a biforcazione e percolazione come transizione critica.
- **Controllo concretezza**: il ritorno non e promosso; il null mostra ricostruzione frequente del bridge status.
- **Relazione nuova**: il graph-reader puo nominare logistica/percolation come bridge senza costo sufficiente della label sorgente.
- **Osservabile/test fisico possibile**: null row-local che rompe ordine temporale/logistico o geometria del cluster percolativo senza permutare label globali.
- **Se fallisce**: `ritorno_fisico_assente`; il ciclo resta vincolo grafico e contratto per il prossimo null fisico.

## Experiment Design
- **Script**: `tools/exp_boundary_residue_label_count_null_audit.py`.
- **Run**: `python tools/exp_boundary_residue_label_count_null_audit.py --out tools/data/boundary_residue_label_count_null_audit_20260516_1206.json --null-trials 512`.
- **Scope**: `tools/data/boundary_denominator_prescan_full_20260509_1500.json`.
- **Classical/stability audit**: `tools/data/boundary_bridge_stability_audit_20260516_1140.json`.
- **Reader grid**: `k=[2,3,4]`, `n_gaps=[512,1024,2048]`, seeds `[20260515,20260516,20260517]`, totale `27` letture.
- **Null**: permuta `source_domain_type` fra le stesse 13 righe preservando `8` GUE e `5` Poisson; feature row-local, osservabili e shuffle-z restano fissati.
- **P-value**: right-tail; `raw_p=k/N`, `add_one_p=(k+1)/(N+1)`, con `k` = trial null in cui `target_hits >= 27`.
- **Non misurato**: nuovi autovalori, nuovo generatore percolativo/logistico, null fisico interno, limite asintotico.

## Results
| target | source label | observed | null 27/27 | raw_p | add_one_p | Wilson 95% | 27/27 original label | 27/27 swapped label | label state |
|---|---|---:|---:|---:|---:|---|---:|---:|---|
| `logistica_biforcazione_var_3.5699:cycle_13` | GUE | 27/27 | 223/512 | 0.435546875 | 0.436647173 | [0.393236226, 0.478817486] | 107 | 116 | does_not_survive_label_null |
| `percolation:cycle_9` | Poisson | 27/27 | 270/512 | 0.527343750 | 0.528265107 | [0.484056280, 0.570223964] | 108 | 162 | does_not_survive_label_null |

| aggregate | count |
|---|---:|
| any graph-only row reaches 27/27 under null | 417/512 |
| observed stable 27/27 rows | `logistica_biforcazione_var_3.5699`, `numeri_primi`, `percolation` |

## Key Findings
1. Verificato: entrambi i target sono `graph_only_bridge` e osservati `27/27` nel reader.
2. Verificato: `logistica_biforcazione_var_3.5699` viene ricostruita `27/27` in `223/512` permutazioni; `116` di questi hit avvengono con label scambiata.
3. Verificato: `percolation` viene ricostruita `27/27` in `270/512` permutazioni; `162` di questi hit avvengono con label scambiata.
4. Verificato: almeno una riga graph-only raggiunge `27/27` in `417/512` null; la stabilita piena e frequente nel reader.
5. Inferito dal perimetro: i due residui non portano costo di label sorgente; sono target utili per un null fisico interno, non scoperte promuovibili.

## Verdict
CONSTRAINT.

Il gate label-count-preserving chiude la promozione dei residui graph-only. `logistica_biforcazione_var_3.5699` e `percolation` restano righe operative del grafo, ma non diventano ritorno fisico ne boundary a due lettori. Il prossimo passo regressivo e un null row-local specifico per dinamica: rompere ordine logistico/percolativo mantenendo feature marginali, poi chiedere se il bridge cade.

## Bicono della scoperta
- **Due radici**: residuo graph-only osservato / residuo ricostruito dal null.
- **Singolare**: la riga del dominio prima della label sorgente e prima del nome fisico.
- **Invariante di passaggio**: stesso denominatore 13 righe, stesso reader 27 letture, stesso conteggio 8/5.
- **Campo di possibilita**: possibile = usare i due target come stress test per null fisici interni; non-possibile = sommare graph-only residue al boundary o proporre ritorno fisico dal solo grafo.

## Consecutio
Costruire un null fisico row-local per i due target: per logistica, block/time shuffle o surrogate che conserva distribuzione locale ma rompe ordine orbitale; per percolation, rewiring/cluster surrogate che conserva size distribution o grado locale ma rompe geometria critica. Se il bridge cade, il residuo e reader artifact; se resta, riapre il ritorno fisico.

## Ricadute pratiche
ssp_value: yes. `tools/exp_boundary_residue_label_count_null_audit.py` diventa gate riusabile per audit multi-target su residui graph-only prima di qualunque promozione.

## Telemetria
- No API paid run: `ANTHROPIC_API_KEY` e `OPENAI_API_KEY` non presenti nell'ambiente.
- `python -m py_compile tools/exp_boundary_residue_label_count_null_audit.py` completato.
- Primo run 12:06 incoerente dopo join difettoso `audit_state/classical_audit_state`; corretto il nodo regressivo nel join e rieseguito con `512` permutazioni.
- Verifica baseline separata: `python tools/exp_boundary_prime_label_null_audit.py --out /tmp/prime_label_check_1206.json --null-trials 1` riproduce `27/27` per il target prime e mostra lo stesso set osservato `logistica`, `numeri_primi`, `percolation`, `reaction_diffusion` nel controllo rapido.
- Worktree gia dirty prima del ciclo; ignorate modifiche non correlate.
- Nessun update del seme.
- Nessuna promozione e nessun public sync.

## Files
- Script: `tools/exp_boundary_residue_label_count_null_audit.py`
- Data: `tools/data/boundary_residue_label_count_null_audit_20260516_1206.json`
- Report: `tools/data/reports/agent_20260516_1206.md`
