# Agent Report - Vc Label Reachability Gate
**Date**: 2026-05-09 06:59
**Piano**: 98
**Tension explored**: TRASCENDENZA_LIMITE / V_c null regressivo
**verdict**: CONSTRAINT on null reachability
observables_registry: 1.0.0-2026-05-06
observables_used: [`event_type`, `vc_interp`, `r_floor`, `r_span`, `label_jaccard`, `acceptance_rate`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
**observable_contract**: claim=il null label-preserving deve essere raggiungibile oltre N=89 prima di usare `V_c` per trasferire il boundary verso altri perimetri; observable=`event_type={floor_hit,internal_cross,internal_multi,no_cross}`, `vc_interp`, `r_floor`, `r_span`, `label_jaccard`, `acceptance_rate`; operator=surrogate bilanciato con swap 0/1, gate `label_jaccard>=0.75`, poi curva `r(V)` su griglia 0.5..3.0 step 0.01; generator=phi Sturmian, balanced_random, swap_label_surrogate; denominator=N=144, phase={0,0.25,0.5,0.75}, r_threshold={0.48,0.50,0.52}, random_trials=1, label_trials=1, swap_steps=120, seed=202605090659; non_possible=se il gate label-preserving non viene raggiunto, il ciclo non puo' usare il surrogate come controprova del boundary Sturmian; not_tested=GUE/Poisson reali, silver/bronze, fit power-law, gap_ratio, sufficienza del label-set con surrogate accettati a N=144.

## Respiro fuori-tempo
- **Combo**: A2 confine det=-1 + A9 terzo incluso + TxQ matrice densita come lettore spettrale + topologia assiomatica del boundary operator + tensione `TRASCENDENZA_LIMITE` sul null `V_c`.
- **Dipolo / punto-zero**: null raggiungibile / null non raggiungibile; punto-zero = sequenza bilanciata prima della lettura spettrale, dove marginale, label-set e ordine generativo non sono ancora separati.
- **Piano superiore**: topologia della filtrazione. Prima del valore `V_c` c'e' il problema di esistenza del contro-campo: un null non accettato non puo' decidere la curva.
- **Operatori laterali scelti**: boundary operator, filtrazione, swap-constrained surrogate. Il boundary operator separa crossing e floor; la filtrazione produce `r(V)`; lo swap testa se il vincolo label-set e' raggiungibile senza copiare l'ordine Sturmian.
- **Contaminazione cognitiva**:
  - **CE-0117 / KSAR**: reiterazione diretta del kernel 06:52 sul nodo lasciato aperto: stabilita' cross-scale del null.
  - **PVI attack**: il rischio e' trasformare un fallimento computazionale in prova fisica; per questo il verdict e' solo reachability del null.
  - **CE-0001**: il run largo fermato per budget resta telemetria e non viene usato come evidenza numerica.
- **Proto-ipotesi**: se il generatore label-preserving e' pronto per il trasferimento, allora a N=144 deve raggiungere `Jaccard>=0.75` con accettazione non nulla. Se non raggiunge il gate, il prossimo passo resta costruzione del null, non estensione a GUE/Poisson.
- **Proiezione**: misuro prima `acceptance_rate` e `label_jaccard`; `event_type` e `V_c` sono riportati come telemetria del surrogate non accettato, non come controprova del boundary.

## Claim Under Test
> Nel perimetro N=144, il surrogate swap label-preserving raggiunge il gate `Jaccard>=0.75` abbastanza da diventare null valido per confrontare `V_c`.

## Question
Il fallimento oltre N=89 era solo budget del run precedente, oppure il null label-preserving non e' ancora raggiungibile nel perimetro N=144?

## Experiment Design
- Script riusato: `tools/exp_vc_label_preserving_swap_gate.py`.
- Hamiltoniana: diagonale `V * seq`, off-diagonal 1, autovalori tridiagonali.
- Curva: `r(V)` per `V=0.5..3.0`, step `0.01`.
- Gate null: `swap_label_surrogate` accettato solo se `label_jaccard>=0.75` contro label-set Sturmian matched.
- Denominatore grezzo: `phi_sturmian=12` righe evento, `balanced_random=12`, `swap_label_surrogate=12`; 4 sequenze surrogate candidate, una per fase.
- Perimetro ridotto: prima sono stati tentati run piu' larghi (`N=89,144,233` con 12000 swap; `N=144` con 5000 e 1200 swap). Non hanno chiuso nel budget del ciclo e sono telemetria di costo, non risultati del report.

## Results
Sintesi aggregata:

| generator | conditions | floor_hit | internal_cross | internal_multi | internal_rate | vc_median | r_floor_median | r_span_median | label_jaccard_median | acceptance_rate |
|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| phi_sturmian | 12 | 0 | 12 | 0 | 1.0000 | 1.079034 | 0.659728 | 0.371911 | 1.000000 | 1.0000 |
| balanced_random | 12 | 4 | 6 | 2 | 0.6667 | 0.571850 | 0.520767 | 0.210637 |  |  |
| swap_label_surrogate | 12 | 5 | 1 | 6 | 0.5833 | 0.520263 | 0.502703 | 0.210624 | 0.500000 | 0.0000 |

Audit accettazione surrogate:

| N | phase | label_jaccard | accepted | steps_used | accepted_steps |
|---:|---:|---:|---|---:|---:|
| 144 | 0.00 | 0.642857 | false | 120 | 27 |
| 144 | 0.25 | 0.500000 | false | 120 | 27 |
| 144 | 0.50 | 0.500000 | false | 120 | 13 |
| 144 | 0.75 | 0.333333 | false | 120 | 37 |

Per soglia del surrogate non accettato:

| r_threshold | floor_hit | internal_cross | internal_multi | vc_median |
|---:|---:|---:|---:|---:|
| 0.48 | 0 | 0 | 4 | 0.571039 |
| 0.50 | 2 | 0 | 2 | 0.527095 |
| 0.52 | 3 | 1 | 0 | 0.500000 |

## Key Findings
1. **Verificato: a N=144 il gate label-preserving non viene raggiunto in questo perimetro diagnostico.** Le 4 sequenze surrogate hanno `accepted=false`; il massimo Jaccard e' `0.642857`, sotto il gate `0.75`.
2. **Verificato: il surrogate non accettato resta event-type random-like.** Produce `5/12` floor-hit, `6/12` internal_multi e solo `1/12` internal_cross; lo Sturmian produce `12/12` internal_cross e nessun floor/multi.
3. **Verificato: il valore `V_c` del surrogate non accettato resta vicino al bordo.** `vc_median=0.520263` e `r_floor_median=0.502703`, contro `vc_median=1.079034` e `r_floor_median=0.659728` dello Sturmian.
4. **Verificato: il costo del null cresce prima della prova fisica.** I tentativi piu' larghi non chiudono nel budget del cycle; il nodo regressivo e' il generatore del null, non il boundary verso GUE/Poisson.
5. **Inferito: N=89 non basta come prova di trasferibilita' del null.** Il risultato 06:52 resta valido nel suo perimetro; per N=144 serve un generatore piu' efficiente o un criterio label-preserving diverso prima di parlare di sufficienza del label-set.

## Verdict
**CONSTRAINT on V_c null reachability**: nel perimetro diagnostico `N=144`, `phase={0,0.25,0.5,0.75}`, `r_threshold={0.48,0.50,0.52}`, `swap_steps=120`, il surrogate label-preserving non raggiunge il gate `Jaccard>=0.75`. Quindi il ciclo non decide la sufficienza del label-set a N=144; decide che il null non e' ancora generatore valido oltre N=89.

La formulazione valida e': prima di estendere `V_c` a GUE/Poisson, il Lab deve produrre un null label-preserving con accettazione dichiarata su N={89,144,233}. Fino a quel punto `event_type` resta gate obbligatorio e `label_jaccard` resta precondizione del confronto, non osservabile accessoria.

## Bicono della scoperta
- **Due radici**: prova fisica del boundary . raggiungibilita' del contro-campo.
- **Singolare**: il surrogate prima dell'accettazione, dove non e' ancora null e non e' ancora evidenza.
- **Invariante di passaggio**: `event_type` continua a separare Sturmian da random-like; cade la possibilita' di usare surrogate non accettati come controprova.
- **Campo di possibilita**: qui diventa possibile trattare l'accettazione del null come osservabile atomica; qui diventa non-possibile trasferire `V_c` fuori dal perimetro Sturmian finche' il null cross-scale non esiste.

## Consecutio
Il prossimo passo e' regressivo sul generatore, non estensivo sul dominio: sostituire lo swap cieco con un generatore vincolato che ottimizza direttamente il label-set per fase e scala, oppure dichiarare che il label-set non e' un vincolo generativo praticabile e scegliere un null piu' nativo all'ordine Sturmian. Solo un null con accettazione non nulla su N={89,144,233} autorizza il passaggio a GUE/Poisson.

## Auto-audit: source flags e 5 lenti
- **Fonti**: Verificato da `tools/data/agent_field_live.md`, `tools/LAB_AGENT_CONTEXT.md`, `tools/data/seme.json`, `tools/dnd_scenario.py --best`, report `agent_20260509_0330.md`, `agent_20260509_0637.md`, `agent_20260509_0652.md`, JSON `tools/data/vc_label_reachability_gate_20260509_0659.json`.
- **L1 hard constraint**: il verdict non dice che il label-set fallisce a N=144; dice che il null accettato non e' stato generato.
- **L2 count grezzi**: riportati `12`, `4`, `5/12`, `6/12`, `1/12`, `0/4`.
- **L3 no silent patching**: i run larghi fermati per budget sono dichiarati come telemetria, non nascosti.
- **L4 edge cases**: fase 0.00 arriva a Jaccard `0.642857`, piu' vicina al gate ma non accettata; fase 0.75 resta `0.333333`.
- **L5 re-discovery vs discovery**: il finding non e' la curva Sturmian; e' il vincolo operativo che l'accettazione del null precede ogni confronto `V_c`.

## Telemetria
- No API paid run: `ANTHROPIC_API_KEY` e `OPENAI_API_KEY` non presenti nell'ambiente.
- Verifica script: `python -m py_compile tools/exp_vc_label_preserving_swap_gate.py` completato senza errori.
- Run validato: `python tools/exp_vc_label_preserving_swap_gate.py --ns 144 --phases 0,0.25,0.5,0.75 --random-trials 1 --label-trials 1 --swap-steps 120 --seed 202605090659 --out tools/data/vc_label_reachability_gate_20260509_0659.json`.
- Run fermati per budget: tentativi con `N=89,144,233` e 12000 swap, poi `N=144` con 5000 e 1200 swap.

## Files
- Script riusato: `tools/exp_vc_label_preserving_swap_gate.py`
- Data: `tools/data/vc_label_reachability_gate_20260509_0659.json`
- Report: `tools/data/reports/agent_20260509_0659.md`
