# Agent Report - Graph Mechanism Ablation
**Date**: 2026-05-16 12:30
**Piano**: 135
**Tension explored**: BOUNDARY (0.8)
**verdict**: CONSTRAINT - Nel perimetro fisso `8 GUE / 5 Poisson`, i residui graph-only `logistica_biforcazione_var_3.5699` e `percolation` restano `27/27` nel reader completo. Entrambi cadono quando viene ablato il gruppo feature canoniche, ma il null label-count-preserving N-matched li ricostruisce spesso (`62/128`, `69/128`). Il meccanismo non e un residuo fisico comune: logistica dipende anche dalla topologia degree/cluster (`1/128` rewire ricostruisce 27/27), percolation no (`95/128` rewire ricostruisce 27/27).
observables_registry: 1.0.0-2026-05-06 via boundary_graph_curvature_gate
observables_used: [full_graph_bridge_hits, centroid_only_no_knn_hits, knn_only_no_centroid_hits, feature_group_ablation_hits, label_permutation_ge_full, degree_rewire_ge_full, feature_column_shuffle_ge_full]
**observable_contract**: claim=un residuo graph-only e mechanism-specific solo se cade sotto una ablation nominata e non viene ricostruito da null comparabili; observable=hit count del target su 27 letture graph-reader sotto ablation deterministiche e null N-matched; operator=scissione del predicate originale in centroid gate, kNN cross-label gate, topology degree-preserving e feature row-local; generator=13 righe BOUNDARY con feature boundary_graph_curvature_gate; denominator=13 righe, 27 letture, 128 trial per ogni null stocastico; p_value_definition=right-tail raw_p=k/N, k = trial null con target_hits >= full observed hits; non_possible=promuovere graph-only residue se nessuna componente specifica lo fa cadere o se i null N-matched ricostruiscono spesso il full count; not_tested=nuove dinamiche fisiche, nuovi domini, scaling asintotico, promozione a due lettori.

## Respiro fuori-tempo
- **Combo**: A9 terzo incluso + A11 combo + BOUNDARY `8 GUE / 5 Poisson` + grafo conoscenza come lettore + vincolo del seme sui residui graph-only.
- **Dipolo / punto-zero**: residuo graph-only / meccanismo del reader. Punto-zero: la riga prima che il reader la spezzi in centroidi, kNN e feature row-local.
- **Piano superiore**: topologia del grafo e bicono-dipoli; il bordo viene letto come predicate composto, non come singolo numero.
- **Operatori laterali scelti**: kNN boundary, degree-preserving rewiring, feature row-local ablation.
- **Contaminazione cognitiva**: CE-none:`tools/data/agent_field_live.md` letto nel ciclo 12:30; non contiene un archivio enzimi esplicito da metabolizzare. Uso KSAR solo come metodo implicito di reiterazione del kernel 12:06 sullo stesso denominatore.
- **Proto-ipotesi**: un residuo graph-only che non costa sotto label permutation puo ancora informare il reader solo se una componente nominata lo fa cadere; se cade in modo diverso fra target, non esiste un meccanismo grafico comune promuovibile.
- **Proiezione**: separare il predicate `cross_neighbor_fraction > 0 and centroid_margin < 0.25` e ablarne feature/topologia sullo stesso 13x27.
- **Movimento A->M->B**: fisico A = confine GUE/Poisson nel denominatore del seme; matematica M = predicate kNN-centroid su feature spettrali; fisico B = logistica/percolation come ritorno. Il ritorno fisico resta assente: il ciclo delimita il reader.

## Aderenza alla direzione
- `relation`: `follows_direction`
- `why`: l'esperimento esegue ablation su centroidi, kNN, degree/cluster boundary e feature row-local mantenendo fisso il perimetro 13 righe, `8 GUE / 5 Poisson`.
- `not_drift`: non usa Sturmian, phi, V_c, fit locali o nuovi domini; confronta i null con stesso N=128 sullo stesso observable `target_hits >= full_hits`.
- `seed_residue`: resta non testato un null fisico interno alle dinamiche logistica/percolation; resta sospesa la promozione a due lettori.

## Re-discovery audit
- **Baseline noto piu vicino**: kNN stability, degree-preserving graph rewiring, cluster-boundary stability, label permutation null; per il frame spettrale restano Brody/Berry-Robnik/Rosenzweig-Porter come audit di crossover, non come sorgente del claim.
- **Cosa assorbe il baseline**: label permutation ricostruisce spesso `27/27`; quindi il nome GUE/Poisson globale non porta costo sufficiente.
- **Cosa resta Lab-specific**: lo strumento che separa quale parte del reader genera la stabilita graph-only prima di ogni ritorno fisico.
- `two_reader_boundary_confirmed`: non promosso; `numeri_primi` non e target di questo ciclo.
- `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`: centroid-only, kNN-only, feature group ablation, label permutation, degree-preserving rewire, feature-column shuffle.

## Claim Under Test
> Nel perimetro `8 GUE / 5 Poisson`, un residuo graph-only diventa informazione sul meccanismo del reader solo se il full `27/27` cade sotto una componente specifica e non viene ricostruito frequentemente dai null N-matched.

## Question
Il graph-reader ricostruisce i residui per centroidi, per kNN/degree boundary, o per feature row-local?

## Ritorno fisico
- **Punto fisico sorgente**: confine GUE/Poisson con righe logistica e percolation nel denominatore BOUNDARY.
- **Attraversamento matematico**: predicate composto su feature spettrali standardizzate, centroidi di classe e grafo kNN.
- **Punto fisico di ritorno**: dinamica logistica vicino alla biforcazione e percolazione critica.
- **Controllo concretezza**: nessuna promozione; i null di label ricostruiscono spesso il target pieno.
- **Relazione nuova**: la logistica segnala una dipendenza topologica degree/cluster piu forte della percolation; non e un ponte fisico comune.
- **Osservabile/test fisico possibile**: null row-local interno: block/time shuffle per logistica e cluster/geometry rewiring per percolation.
- **Se fallisce**: `ritorno_fisico_assente`; resta vincolo sul reader e strumento di audit.

## Experiment Design
- **Script**: `tools/exp_boundary_graph_mechanism_ablation.py`.
- **Run**: `python tools/exp_boundary_graph_mechanism_ablation.py --out tools/data/boundary_graph_mechanism_ablation_20260516_1230.json --null-trials 128`.
- **Scope**: `tools/data/boundary_denominator_prescan_full_20260509_1500.json`.
- **Reader grid**: `k=[2,3,4]`, `n_gaps=[512,1024,2048]`, seeds `[20260515,20260516,20260517]`, totale `27` letture.
- **Ablation deterministiche**: centroid-only senza kNN, kNN-only senza centroid gate, gruppo canonical zeroed, `SR_local_rigidity` zeroed, shuffle-z zeroed.
- **Null stocastici comparabili**: label permutation, degree-preserving rewire, feature-column shuffle; tutti N=128 e stesso tail `hits >= full_hits`.
- **Non misurato**: nuove serie fisiche, Hamiltoniani, scaling a N maggiore, sorgente analitica delle label.

## Results
| target | full | centroid-only no kNN | kNN-only no centroid | drop canonical | drop SR_local | drop shuffle_z | label perm ge full | degree rewire ge full | feature column shuffle ge full |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| `logistica_biforcazione_var_3.5699:cycle_13` | 27/27 | 27/27 | 27/27 | 9 | 0 | 0 | 62/128 | 1/128 | 4/128 |
| `percolation:cycle_9` | 27/27 | 27/27 | 27/27 | 3 | 0 | 9 | 69/128 | 95/128 | 31/128 |

| target | label raw_p | degree raw_p | feature-shuffle raw_p | mechanism state |
|---|---:|---:|---:|---|
| `logistica_biforcazione_var_3.5699:cycle_13` | 0.484375 | 0.0078125 | 0.03125 | component_specific |
| `percolation:cycle_9` | 0.5390625 | 0.7421875 | 0.2421875 | component_specific, but not topology-specific |

## Key Findings
1. Verificato: i due target sono `27/27` nel reader completo e restano `27/27` se si rimuove uno dei due lati logici del predicate (`centroid-only` o `kNN-only`). Il predicate e ridondante sui target pieni.
2. Verificato: ablando le feature canoniche, logistica scende di `9/27` e percolation di `3/27`; `SR_local_rigidity` non produce drop per nessuno dei due.
3. Verificato: ablando shuffle-z, percolation scende di `9/27`, logistica non scende. I due residui non condividono lo stesso meccanismo feature.
4. Verificato: degree-preserving rewire ricostruisce logistica `27/27` solo `1/128`, ma ricostruisce percolation `95/128`. La topologia degree/cluster e discriminante per logistica, non per percolation.
5. Verificato: label permutation resta alto per entrambi (`62/128`, `69/128`); quindi nessun residuo passa a ritorno fisico.

## Verdict
CONSTRAINT.

Il ciclo isola il meccanismo come vincolo differenziato, non come scoperta: `logistica_biforcazione_var_3.5699` dipende da feature canoniche e dalla specifica topologia kNN/degree; `percolation` dipende da feature canoniche + shuffle-z ma viene ricostruita dalla topologia degree-preserving. Il residuo graph-only comune non sopravvive: esistono due artefatti di reader con componenti diverse.

## Bicono della scoperta
- **Due radici**: stabilita graph-only piena / caduta sotto componente nominata.
- **Singolare**: il predicate del reader prima della scissione in feature, centroidi e kNN.
- **Invariante di passaggio**: denominatore 13 righe, 8/5 labels, 27 letture, tail `hits >= full_hits`.
- **Campo di possibilita**: possibile = progettare null fisici diversi per logistica e percolation; non-possibile = promuovere un residuo graph-only comune o sommarlo al boundary a due lettori.

## Consecutio
Separare i due target. Per logistica: stressare la topologia con block/time shuffle che conserva marginali ma rompe ordine orbitale. Per percolation: usare null di cluster geometry, perche il degree-preserving rewire non basta a far cadere il target. Nessuna promozione finche il null fisico interno non produce costo non ricostruibile dalla label permutation.

## Ricadute pratiche
ssp_value: yes. `tools/exp_boundary_graph_mechanism_ablation.py` diventa audit riusabile per residui graph-only: nessun target passa dal grafo alla fisica senza mostrare quale componente lo sostiene e quale null comparabile non lo ricostruisce.

## Telemetria
- No API paid run: `ANTHROPIC_API_KEY` e `OPENAI_API_KEY` non presenti nell'ambiente.
- `python -m py_compile tools/exp_boundary_graph_mechanism_ablation.py` completato.
- Run completato: `tools/data/boundary_graph_mechanism_ablation_20260516_1230.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_boundary_graph_mechanism_ablation.py`
- Data: `tools/data/boundary_graph_mechanism_ablation_20260516_1230.json`
- Report: `tools/data/reports/agent_20260516_1230.md`
