# Agent Report - Vc Generator Class Scale Gate
**Date**: 2026-05-09 08:37
**Piano**: 101
**Tension explored**: TENS_SCALE_TRASCENDENZA_LIMITE / TRASCENDENZA_LIMITE
**verdict**: CONSTRAINT on generator class scale transfer
observables_registry: 1.0.0-2026-05-06
observables_used: [`label_jaccard`, `acceptance_rate`, `hamming_ratio`, `source_mode`, `generator_class`, `event_type`, `vc_interp`, `r_floor`] - osservabili domain-native, non canonici SR/SR2/L1/L2/triple_var
**observable_contract**: claim=la separazione ordine aperto / chiusura periodica / dispersione random trasferisce fuori da `N=144`; observable=`label_jaccard`, `acceptance_rate`, `hamming_ratio`, `source_mode`, `generator_class`, `event_type`, `vc_interp`, `r_floor`; operator=scansione multi-scala dei modi discriminanti del gate 08:29; generator=phi_sturmian, block_shuffle_{21,34,45}, periodic_approximant_{21,45,72}, balanced_random, markov_density; denominator=`N={89,144,233,377}`, phases `{0,0.25,0.5,0.75}`, r_threshold `{0.48,0.50,0.52}`, 5,766 candidati non-Sturmian post hamming gate; non_possible=se periodic closure accetta label ma produce `no_cross`, `label_jaccard` non certifica boundary-crossing; not_tested=fit power-law di `V_c`, gap_ratio, scale oltre `N=377`, generatori diversi da quelli discriminanti.

## Respiro fuori-tempo
- **Prima impressione**: il boundary non chiede un valore di scala; chiede il tipo di memoria che sopravvive quando il denominatore cambia.
- **Combo**: A2 confine det=-1 + A9 terzo incluso + QxG continuo/discreto + topologia del label reader + tensione `TENS_SCALE_TRASCENDENZA_LIMITE`.
- **Dipolo / punto-zero**: ordine aperto / chiusura periodica; punto-zero = sequenza label-preserving prima che `event_type` decida se il crossing resta vivo.
- **Piano superiore**: topologia assiomatica e grafo delle classi operative. La misura non cerca il miglior `V_c`; tipizza il generatore che trasporta o disperde il boundary.
- **Operatori laterali scelti**: boundary condition, word cut, periodic approximant. Entrano per separare memoria d'ordine, chiusura periodica e dispersione random.
- **Contaminazione cognitiva**:
  - **CE-0117**: cascata della possibilita; il ciclo non aggiunge un nuovo generatore, porta il risultato 08:29 sul piano di scala.
  - **CE-0001 / KSAR**: reiterazione regressiva del kernel emerso; stesso strumento, nuovo denominatore.
  - **YSN DeltaLink**: il link non e' label -> crossing, ma classe generatore -> evento.
  - **PVI attack**: un alto `label_jaccard` puo' mascherare una chiusura periodica senza crossing; per questo il verdict richiede `event_type`.
- **Proto-ipotesi**: la memoria d'ordine aperta conserva il crossing su scala piu' stabilmente della chiusura periodica. La dispersione random non conserva il label-set e i suoi crossing misti restano senza lettore topologico.
- **Proiezione**: ripeto solo i modi discriminanti a quattro N. Se block, periodic e random collassano insieme, la separazione era artefatto di N=144; se divergono, la classe del generatore diventa parte atomica del claim boundary.

## Claim Under Test
> Nel perimetro `N={89,144,233,377}`, `generator_class` separa tre regimi: `order_memory` conserva quasi sempre `internal_cross`, `periodic_closure` conserva label ma produce `no_cross` su una quota stabile, `random_dispersion` non passa il gate label-preserving.

## Question
La separazione ordine aperto / chiusura periodica / dispersione random vista a `N=144` trasferisce in scala, oppure era un effetto del denominatore 144?

## Experiment Design
- Strumento riusato: `tools/exp_vc_nonsturmian_label_null_gate.py`.
- Scope: `N=89,144,233,377`; phases `0,0.25,0.5,0.75`; `r_threshold=0.48,0.50,0.52`.
- Modi: `block_shuffle_21/34/45`, `periodic_approximant_21/45/72`, `balanced_random`, `markov_density`, controllo `phi_sturmian`.
- Gate: `label_jaccard>=0.75`, `hamming_ratio>=0.03`, `label_threshold=2.0`, `top_k=12`, `max_label=34`.
- Denominatore grezzo: `5,766` audit rows non-Sturmian; `672` accepted non-Sturmian.
- Classi operative: `order_memory` = block shuffle; `periodic_closure` = periodic approximant; `random_dispersion` = balanced random + Markov-density.

## Results

Candidate gate per N e classe:

| N | order_memory | periodic_closure | random_dispersion |
|---:|---:|---:|---:|
| 89 | 104/353 | 99/528 | 0/448 |
| 144 | 29/510 | 51/576 | 0/448 |
| 233 | 118/567 | 144/576 | 0/448 |
| 377 | 28/576 | 99/576 | 0/448 |

Accepted event rows per classe:

| generator_class | rows | events | label_jaccard_median | hamming_median |
|---|---:|---|---:|---:|
| order_memory | 837 | internal_cross=819; internal_multi=11; no_cross=7 | 0.833 | 0.067-0.077 sui modi dominanti |
| periodic_closure | 1179 | internal_cross=306; no_cross=873 | 0.818 su periodic_21 accepted | 0.215 su periodic_21 accepted |
| random_dispersion | 0 accepted | none |  |  |

Best-per-mode event summary per N:

| N | class | event rows | events | label_med | vc_med |
|---:|---|---:|---|---:|---:|
| 89 | order_memory | 36 | internal_cross=36 | 0.854 | 1.250 |
| 89 | periodic_closure | 33 | internal_cross=33 | 0.625 | 0.999 |
| 89 | random_dispersion | 24 | internal_multi=12; internal_cross=11; floor_hit=1 | 0.240 | 0.747 |
| 144 | order_memory | 36 | internal_cross=36 | 0.710 | 1.106 |
| 144 | periodic_closure | 36 | internal_cross=26; no_cross=9; floor_hit=1 | 0.542 | 0.662 |
| 144 | random_dispersion | 24 | internal_cross=15; floor_hit=4; internal_multi=5 | 0.270 | 0.606 |
| 233 | order_memory | 36 | internal_cross=36 | 0.773 | 1.043 |
| 233 | periodic_closure | 36 | internal_cross=27; no_cross=9 | 0.555 | 0.668 |
| 233 | random_dispersion | 24 | floor_hit=10; internal_cross=14 | 0.286 | 0.507 |
| 377 | order_memory | 36 | internal_cross=34; internal_multi=2 | 0.679 | 0.792 |
| 377 | periodic_closure | 36 | internal_cross=20; floor_hit=1; no_cross=15 | 0.555 | 0.677 |
| 377 | random_dispersion | 24 | internal_cross=2; floor_hit=20; internal_multi=2 | 0.294 | 0.500 |

Source-mode acceptance highlights:

| source_mode | accepted / candidates | acceptance_rate | best_label_jaccard |
|---|---:|---:|---:|
| balanced_random | 0/1024 | 0.000 | 0.353 |
| markov_density | 0/768 | 0.000 | 0.312 |
| block_shuffle_21 | 62/757 | 0.082 | 1.000 |
| block_shuffle_34 | 208/579 | 0.359 | 1.000 |
| block_shuffle_45 | 9/670 | 0.013 | 0.909 |
| periodic_approximant_21 | 387/720 | 0.538 | 0.909 |
| periodic_approximant_45 | 6/768 | 0.008 | 0.750 |
| periodic_approximant_72 | 0/768 | 0.000 | 0.727 |

## Key Findings
1. **Verificato: dispersione random non preserva il label-set in scala.** Balanced random e Markov-density fanno `0/1792` accettati complessivi e `0/448` a ciascun N.
2. **Verificato: `order_memory` trasferisce il crossing fuori da N=144.** Sugli accepted event rows, block shuffle produce `internal_cross/internal_multi=830/837`; i `no_cross` sono `7/837`.
3. **Verificato: `periodic_closure` accetta label ma rompe il crossing.** Periodic closure produce `1179` accepted event rows, ma `873/1179` sono `no_cross`.
4. **Verificato: la separazione resta visibile a `N=233` e `N=377`.** A `N=233`, order_memory ha `36/36` internal_cross nel best-per-mode; periodic closure ha `9/36` no_cross. A `N=377`, order_memory ha `34/36` internal_cross e `2/36` internal_multi; periodic closure ha `15/36` no_cross.
5. **Inferito: la classe operativa del generatore deve entrare nel contratto boundary.** `label_jaccard` nomina il vocabolario topologico; `event_type` nomina il trasporto dinamico; `generator_class` decide se i due restano accoppiati.

## Verdict
**CONSTRAINT**: la separazione di N=144 trasferisce nel perimetro `N={89,144,233,377}`. Il boundary non e' un claim su `label_jaccard` isolato e non e' un claim su `V_c` isolato. Il contratto valido e':

`generator_class + label_jaccard + event_type`.

`order_memory` porta il crossing; `periodic_closure` porta spesso il label-set ma lo disaccoppia dal crossing; `random_dispersion` non entra nel gate label-preserving. Il nodo regressivo del fit fallito non e' il modello power-law di `V_c`; e' la mancata tipizzazione del generatore prima della scansione.

## Bicono della scoperta
- **Due radici**: memoria d'ordine aperta . chiusura periodica.
- **Singolare**: il label reader phi prima che si divida in vocabolario topologico e crossing dinamico.
- **Invariante di passaggio**: `internal_cross` resta stabile quando il generatore conserva ordine aperto; non segue automaticamente dal label-set.
- **Campo di possibilita**: qui diventa possibile costruire una scansione boundary tipizzata per classi di generatore; qui diventa non-possibile trattare `V_c` scaling o `label_jaccard` come osservabile sufficiente senza `source_mode/event_type`.

## Consecutio
La prossima scansione deve partire dalla tipizzazione, non dal valore: per ogni nuovo N o generatore dichiarare prima `generator_class` (`order_memory`, `periodic_closure`, `random_dispersion`, oppure nuova classe motivata), poi misurare `label_jaccard` e `event_type` su righe row-aligned. Il fit di scala di `V_c` rientra solo dopo questo gate.

## 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_0829.md`, JSON `tools/data/vc_generator_class_scale_gate_20260509_0837.json`.
- **L1 hard constraint**: il verdict e' scoped a `N={89,144,233,377}` e ai generatori testati.
- **L2 count grezzi**: riportati `672/5766`, `0/1792`, `830/837`, `873/1179`, denominatori per N e classe.
- **L3 no observable drift**: fit power-law, `gap_ratio`, scale oltre `N=377` non sono testati.
- **L4 edge cases**: a `N=89` periodic closure best-per-mode ha `33/33` internal_cross ma label mediano `0.625`; questo non annulla il vincolo sugli accepted event rows, segnala che best-per-mode e accepted-candidate sono livelli diversi.
- **L5 re-discovery vs discovery**: non e' scoperta che random perda ordine; il finding e' la tripartizione operativa che spiega il fit di scala fallito.

## 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_nonsturmian_label_null_gate.py` completato senza errori.
- Run valido: `python tools/exp_vc_nonsturmian_label_null_gate.py --ns 89,144,233,377 --phases 0,0.25,0.5,0.75 --r-thresholds 0.48,0.50,0.52 --random-trials 64 --mode-trials 48 --block-sizes 21,34,45 --periods 21,45,72 --min-hamming-ratio 0.03 --label-jaccard-min 0.75 --label-threshold 2.0 --top-k 12 --max-label 34 --seed 202605090837 --include-rejected-best --out tools/data/vc_generator_class_scale_gate_20260509_0837.json`.

## Files
- Script riusato: `tools/exp_vc_nonsturmian_label_null_gate.py`
- Data: `tools/data/vc_generator_class_scale_gate_20260509_0837.json`
- Report: `tools/data/reports/agent_20260509_0837.md`
