# Agent Report - Vc Fit Model Gate
**Date**: 2026-05-09 14:00
**Piano**: 103
**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / TRASCENDENZA_LIMITE (0.6 / 0.9)
**verdict**: CONSTRAINT on V_c scale model selection
observables_registry: 1.0.0-2026-05-06
observables_used: [`denominator_state`, `fit_ready_rows`, `excluded_rows`, `best_model`, `delta_aicc_to_second`, `unit_limit_status`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
**observable_contract**: claim=il fit parametrico di `V_c` puo' entrare solo sulle righe `complete` o `contaminated` del gate fit-ready; observable=famiglia di modello migliore tra cinque forme semplici, separata da stato denominatore e massa esclusa; operator=confronto AICc su `vc_median_fit_ready` dal deposito 13:37, senza ricomputare spettri; generator=classi `reference_order`, `order_memory`, `periodic_closure`, `random_dispersion`; denominator=JSON `vc_fit_ready_scale_table_20260509_1337`, N={89,144,233,377}, soglie r={0.48,0.50,0.52}, livelli `per_mode_best` e `accepted_candidates`; non_possible=righe `broken` escluse dal fit e righe sotto `V_c=1` impediscono il claim osservato "converge a 1 dall'alto"; not_tested=nuovi N, nuovi generatori, nuovi spettri, GUE/Poisson transfer, gap_ratio, fit a tre parametri con asintoto libero.

## Respiro fuori-tempo
- **Prima impressione**: dopo il gate fit-ready il problema non e' piu' "il fit converge"; e' "quale arco del grafo puo' ricevere una legge senza inglobare massa esclusa".
- **Combo**: A2 confine det=-1 + A3 punto fisso come attrattore dichiarato + A9 terzo incluso + QxG continuo/discreto + grafo dei generatori + tensione `TENS_SCALE_TRASCENDENZA_LIMITE`.
- **Dipolo / punto-zero**: legge di scala / famiglia non identificata; punto-zero = il denominatore fit-ready prima che il modello numerico scelga una forma.
- **Piano superiore**: grafo della conoscenza e bicono-dipoli. Il modello e' un arco permesso solo se il nodo denominatore conserva crossing.
- **Operatori laterali scelti**: fit come morfismo, boundary operator, graph cut. Entrano per separare righe ammesse, righe rotte e famiglie numeriche.
- **Contaminazione cognitiva**:
  - **CE-0001 / KSAR**: reiterazione sul deposito 13:37 senza cambiare campo dati.
  - **CE-0117**: cascata della possibilita; il fit entra solo dopo il gate e resta subordinato al denominatore.
  - **YSN DeltaLink**: `denominator_state -> admissible_fit -> model_family`, non `V_c -> legge`.
- **Proto-ipotesi**: la famiglia di scala non e' una proprieta globale di `V_c`. Nel sottografo ordinato fit-ready, la scala osservata e' quasi lineare in N sul perimetro; nei sottografi contaminati la famiglia cambia o resta non identificabile.
- **Proiezione**: confronto cinque forme a due parametri su ogni riga ammissibile: `a+b*N`, `a+b*log(N)`, `a+b/sqrt(N)`, `a+b/N`, `c*N^b` con asintoto zero. Le righe `broken` vengono riportate ma non fittate.

## Claim Under Test
> Nel perimetro fit-ready 13:37, `order_memory` e `reference_order` possono ricevere una selezione di modello; `periodic_closure` e `random_dispersion` non possono essere aggregati alla stessa legge senza dichiarare contaminazione o rottura.

## Question
Una volta esclusi `no_cross` e `floor_hit`, il fit di scala di `V_c` identifica una legge comune, oppure divide il grafo dei generatori in famiglie di scala distinte?

## Experiment Design
- Nuovo strumento: `tools/exp_vc_fit_model_gate.py`.
- Input: `tools/data/vc_fit_ready_scale_table_20260509_1337.json`.
- Output: `tools/data/vc_fit_model_gate_20260509_1400.json`.
- Stati ammessi al fit: `complete`, `contaminated`.
- Stati esclusi dal fit: `broken`.
- Criterio modello: AICc su quattro punti N per riga; `delta_aicc_to_second < 2` = famiglia non identificata.
- Check non-possibile: conteggio dei punti osservati con `V_c < 1`.

## Results

Indice globale:

| measure | value |
|---|---:|
| input rows | 18 |
| admissible rows | 13 |
| excluded broken rows | 5 |
| best linear_N | 9 |
| best inv_N | 4 |
| ambiguous rows (`delta_aicc<2`) | 4 |
| rows with observed `V_c<1` | 12 |

Righe rappresentative, soglia `r=0.50`:

| level | class | state | fit_ready/total | excluded | best model | delta AICc | last V_c |
|---|---|---|---:|---:|---|---:|---:|
| per_mode_best | reference_order | complete | 16/16 | 0 | linear_N | 5.651 | 0.879 |
| per_mode_best | order_memory | complete | 48/48 | 0 | linear_N | 6.607 | 0.774 |
| per_mode_best | periodic_closure | contaminated | 36/47 | 11 | inv_N | 1.378 | 0.650 |
| accepted_candidates | order_memory | contaminated | 278/279 | 1 | linear_N | 4.565 | 0.899 |
| accepted_candidates | order_memory r0.52 | complete | 279/279 | 0 | linear_N | 5.926 | 0.781 |

Righe escluse per stato `broken`:

| level | class | fit_ready/total | excluded |
|---|---|---:|---:|
| per_mode_best | random_dispersion r0.50 | 20/32 | 12 |
| per_mode_best | random_dispersion r0.52 | 15/32 | 17 |
| accepted_candidates | periodic_closure r0.48 | 102/393 | 291 |
| accepted_candidates | periodic_closure r0.50 | 102/393 | 291 |
| accepted_candidates | periodic_closure r0.52 | 102/393 | 291 |

Ambiguita' di famiglia (`delta AICc < 2`):

| row | best | delta AICc |
|---|---|---:|
| per_mode_best:order_memory:r0.52 | linear_N | 1.885 |
| per_mode_best:periodic_closure:r0.48 | inv_N | 1.244 |
| per_mode_best:periodic_closure:r0.50 | inv_N | 1.378 |
| per_mode_best:periodic_closure:r0.52 | inv_N | 1.257 |

## Key Findings
1. **Verificato: il sottografo ordinato fit-ready sceglie `linear_N` nel perimetro osservato.** `reference_order` e `order_memory` completi hanno `linear_N` come miglior famiglia a r=0.48, 0.50, 0.52; a r=0.50 i delta AICc sono 5.651 e 6.607.
2. **Verificato: `accepted_candidates:order_memory` resta lineare dopo il gate.** A r=0.50 e' contaminato da 1 riga esclusa (`278/279` fit-ready), ma il miglior modello resta `linear_N`; a r=0.52 diventa completo (`279/279`) e resta `linear_N`.
3. **Verificato: `periodic_closure` non condivide la famiglia del sottografo ordinato.** Nel best-per-mode e' contaminato e sceglie `inv_N`, ma con delta AICc < 2; negli accepted e' `broken` e non entra nel fit.
4. **Verificato: `random_dispersion` non produce una legge ammessa stabile.** A r=0.48 e' contaminato e sceglie `inv_N`; a r=0.50 e r=0.52 e' `broken`, quindi non e' denominatore di fit.
5. **Verificato: il claim osservato "V_c converge a 1" non regge nel perimetro misurato come vincolo hard.** 12/13 righe fittate hanno almeno un punto osservato sotto 1; `reference_order` e `order_memory` scendono sotto 1 agli N alti.

## Verdict
**CONSTRAINT**: il fit parametrico di `V_c` non produce una legge comune del boundary.

Nel perimetro `N={89,144,233,377}`, il canale `reference_order/order_memory` fit-ready e' leggibile come discesa quasi lineare in N. `periodic_closure` e `random_dispersion` non vanno aggregati: il primo e' contaminato o broken, il secondo passa da contaminato a broken. La formulazione valida e':

`V_c` ha una famiglia di scala per sottografo ammesso; non ha una legge unica prima della separazione `denominator_state + generator_class`.

## Bicono della scoperta
- **Due radici**: famiglia di fit / stato del denominatore.
- **Singolare**: la curva `V_c` prima della scelta del modello, dove valore, massa esclusa e classe generatore sono ancora lo stesso nodo.
- **Invariante di passaggio**: `linear_N` sopravvive nel canale ordinato fit-ready; non sopravvive quando il canale introduce chiusura periodica o dispersione.
- **Campo di possibilita**: qui diventa possibile testare N piu' alti solo sul sottografo `complete`; qui diventa non-possibile dichiarare una convergenza universale di `V_c` a 1 o un power-law comune.

## Consecutio
Il prossimo ciclo deve estendere N solo per `reference_order` e `order_memory` con denominatore `complete`. Se i punti alti restano sotto 1 e lineari nel perimetro esteso, il claim `V_c(phi) -> 1` va riscritto come coordinata storica del vecchio perimetro, non come attrattore del boundary.

## 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_1337.md`, JSON `tools/data/vc_fit_ready_scale_table_20260509_1337.json`, nuovo JSON `tools/data/vc_fit_model_gate_20260509_1400.json`.
- **L1 hard constraint**: il verdict vale solo per N, soglie, classi e deposito dichiarati.
- **L2 count grezzi**: riportati `13/18`, `5 broken`, `16/16`, `48/48`, `36/47`, `278/279`, `279/279`, `102/393`.
- **L3 no observable drift**: non sono testati gap_ratio, nuovi spettri, nuovi N o GUE/Poisson.
- **L4 edge cases**: `order_memory:r0.52` best-per-mode ha delta AICc 1.885, quindi famiglia non identificata hard nonostante best `linear_N`.
- **L5 re-discovery vs discovery**: il finding non e' "linear fit buono"; e' che la famiglia di fit dipende dal sottografo ammesso e che la convergenza a 1 non e' vincolo osservato.

## 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_fit_model_gate.py` completato senza errori.
- Run valido: `python tools/exp_vc_fit_model_gate.py --input tools/data/vc_fit_ready_scale_table_20260509_1337.json --out tools/data/vc_fit_model_gate_20260509_1400.json`.

## Files
- Script nuovo: `tools/exp_vc_fit_model_gate.py`
- Data: `tools/data/vc_fit_model_gate_20260509_1400.json`
- Report: `tools/data/reports/agent_20260509_1400.md`
