# Agent Report - Prime SR Persistent Boundary
**Date**: 2026-05-12 03:30  
**Piano**: 115  
**Tension explored**: BOUNDARY (0.8)  
**verdict**: CONSTRAINT - `prime_SR_persistent_boundary` non chiude come firma prime-specific atomica  
observables_registry: 1.0.0-2026-05-06  
observables_used: [SR, SR2, L1, L2, triple_var, provider, offset, case_state, sr_rate, common_one_sided_observables, prime_control_common_obs_jaccard]  
**observable_contract**: claim=`prime_SR_persistent_boundary` regge solo se le finestre prime conservano `SR` come osservabile one-sided comune attraverso provider e offset, mentre controlli non-prime ampliati non condividono persistenza SR piena; observable=`SR` in `coherent_one_sided_observables` + firma comune one-sided; operator=`exp_prime_sr_persistent_boundary.py`; generator=primi via `row_spacings("numeri_primi")` e `prime_gap_sequence`, controlli via composite gaps, candidati mod6, eventi Cramer-like, GUE blocks, logistic return intervals; denominator=8 finestre prime row-local + 20 controlli non-prime; non_possible=claim prime-specific se `SR` prime scende sotto 8/8, se la firma comune prime non e' `[SR]`, o se una sottofamiglia controllo condivide persistenza SR piena; not_tested=atlante beta globale, `V_c`, `gap_ratio`, origine analitica di SR.

## Respiro fuori-tempo

- **Combo**: A2 confine det=-1 + A9 terzo incluso + QxG continuo/discreto + BOUNDARY come passaggio 8 GUE / 5 Poisson + residuo `prime_SR_persistent_boundary`.
- **Dipolo / punto-zero**: firma dei primi / firma del pre-bordo non-prime. Punto-zero: la sequenza ordinata row-local dove `SR` puo' essere supporto d'ordine senza essere specifica dei primi.
- **Piano superiore**: topologia assiomatica del bordo: `SR` e' una sezione che attraversa provider, offset e controlli; la specie vive solo se la sezione non attraversa il contro-perimetro.
- **Operatori laterali scelti**: boundary operator, generatori non equivalenti, null label-preserving row-local. Entrano per separare supporto osservabile, carta beta e dominio sorgente.
- **Contaminazione cognitiva**: CE-0001/KSAR usato come reiterazione del kernel emerso: non ridisegnare l'atlante, ripassare lo stesso gate su un contro-perimetro piu' largo. PVI: il presupposto attaccato e' "SR persistente nei primi implica prime-specific".
- **Proto-ipotesi**: `SR` e' un bordo prime solo se sopravvive come comune nei primi e fallisce come comune nei generatori non-prime che preservano parti del pre-bordo aritmetico.
- **Proiezione**: stesso gate canonico ordine/null, stesso size 1024, due provider prime, quattro offset, controlli compositi/mod6/Cramer/GUE/logistic.

## Aderenza alla direzione

- `relation`: follows_direction
- `why`: testa direttamente la direzione viva `prime_SR_persistent_boundary`, separando supporto osservabile `SR` da blank beta e ampliando i controlli non-prime.
- `not_drift`: non torna a `V_c`, fit, gap label o beta atlas; usa lo stesso gate solo per falsificare la specificita' prime.

## Claim Under Test

> `SR` e' una firma di confine prime-specific se resta comune in 8/8 finestre prime provider-neutral/offset-shift e nessuna sottofamiglia non-prime mostra persistenza SR piena.

## Question

Quando il blank beta e' rimosso dal nome, `SR` resta bordo dei primi o appartiene a un pre-bordo piu' largo visibile anche nei generatori non-prime?

## Experiment Design

- Prime: 2 provider (`dnd_autoricerca`, `direct_sieve`) x 4 offset (`0`, `512`, `1024`, `1536`) x 1024 gap.
- Controlli: composite gaps, mod6 candidates, Cramer-like events su 4 offset; 4 GUE random matrix blocks; 4 logistic return interval rows.
- Parametri main: `n_replicates=8`, `n_beta=9`, `n_baseline=16`, `z_min=2.0`, seed `202605120330`.
- Seed check: stesso perimetro, seed `202605120331`.
- Null baseline: permutazione marginal-preserving dentro il gate canonico ordine/null.
- Nodo regressivo corretto nello strumento: `common_one_sided_observables` ora include i casi vuoti nell'intersezione; prima i `support_falls` potevano gonfiare il common.

## Results

Main run:

| family | cases | SR hits | common obs | blank | beta recovered | support falls | endpoint mean |
|---|---:|---:|---|---:|---:|---:|---:|
| prime | 8 | 7 | [] | 7 | 1 | 0 | 2.726 |
| all controls | 20 | 5 | [] | 2 | 8 | 10 | 1.815 |
| composite_gaps | 4 | 0 | [] | 0 | 3 | 1 | 2.271 |
| cramer_like | 4 | 0 | [] | 0 | 0 | 4 | 0.000 |
| logistic_return_intervals | 4 | 0 | [] | 0 | 0 | 4 | 0.000 |
| mod6_candidates | 4 | 2 | [] | 0 | 3 | 1 | 3.440 |
| random_matrix | 4 | 3 | L2,triple_var | 2 | 2 | 0 | 3.364 |

Seed check:

| family | cases | SR hits | common obs | blank | beta recovered | support falls | endpoint mean |
|---|---:|---:|---|---:|---:|---:|---:|
| prime | 8 | 7 | [] | 4 | 3 | 1 | 2.474 |
| all controls | 20 | 8 | [] | 5 | 8 | 7 | 2.418 |
| mod6_candidates | 4 | 4 | L1,SR,triple_var | 0 | 3 | 1 | 4.077 |

Prime case details, main:

| case | state | one-sided obs | beta |
|---|---|---|---|
| dnd_autoricerca offset 0 | beta_absent_blank | SR | [] |
| dnd_autoricerca offset 512 | beta_absent_blank | L1,triple_var | [] |
| dnd_autoricerca offset 1024 | beta_absent_blank | SR,L1 | [] |
| dnd_autoricerca offset 1536 | beta_absent_blank | SR,L1,triple_var | [] |
| direct_sieve offset 0 | beta_absent_blank | SR | [] |
| direct_sieve offset 512 | beta_absent_blank | SR,L1,triple_var | [] |
| direct_sieve offset 1024 | beta_chart_recovered | SR,L1,triple_var | 0.2 |
| direct_sieve offset 1536 | beta_absent_blank | SR,L1,triple_var | [] |

## Key Findings

1. **Verificato**: `SR` non resta in 8/8 finestre prime. Main e seed check danno entrambi `SR=7/8`; la firma comune prime e' vuota.
2. **Verificato**: il blank beta non torna come supporto stabile. Main ha 7/8 blank, seed check scende a 4/8 con 3 beta recovery e 1 support fall.
3. **Verificato**: i controlli ampliati non sono blank, ma non sono muti. Main: controlli `SR=5/20`; seed check: `SR=8/20`.
4. **Verificato**: `mod6_candidates` collide nel seed check con `SR=4/4` e common `[L1, SR, triple_var]`. Questo sposta `SR` dal dominio prime al pre-bordo aritmetico `6k +/- 1` nel perimetro testato.
5. **Inferito dal perimetro dichiarato**: la parte robusta non e' "SR e' prime-specific"; e' "SR misura una memoria d'ordine aritmetica che i primi condividono con un contro-perimetro mod6 in alcune repliche".

## Verdict

**CONSTRAINT / FALSIFIED scoped**.

Formula non valida:

`prime_SR_persistent_boundary` come firma atomica prime-specific.

Formula valida nel perimetro:

`SR` e' forte nei primi ma non persistente come comune 8/8; quando il contro-perimetro include candidati `6k +/- 1`, `SR` puo' trasferire fuori dai primi. Il boundary non vive tra prime e non-prime generico; vive tra primi e pre-bordo aritmetico.

## Bicono della scoperta

- **Due radici**: primi come sequenza selezionata / candidati mod6 come pre-bordo non selezionato.
- **Singolare**: l'ordine aritmetico row-local prima della primalita'; qui `SR` non sa ancora se appartiene ai primi o al loro supporto candidato.
- **Invariante di passaggio**: il gate ordine/null vede memoria in `SR`, ma la specificita' prime non sopravvive al contro-perimetro mod6.
- **Campo di possibilita'**: possibile = testare il boundary come selezione prime dentro il pre-bordo `6k +/- 1`; non-possibile = usare `SR` da solo come firma prime-specific.

## Consecutio

Il prossimo ciclo deve spostare il nodo regressivo: non "prime vs controlli generici", ma "primi vs candidati mod6 row-aligned". Il test utile e' sottrarre il pre-bordo: misurare cosa resta in `SR`, `L1` e `triple_var` quando i primi sono confrontati con candidati `6k +/- 1` a stesso offset e stessa densita' locale.

## Ricadute pratiche

ssp_value: yes. `tools/exp_prime_sr_persistent_boundary.py` diventa audit riusabile per distinguere persistenza osservabile, specificita' di dominio e collisione col pre-bordo aritmetico.

## Files

- Script: `tools/exp_prime_sr_persistent_boundary.py`
- Data: `tools/data/prime_sr_persistent_boundary_20260512_0330.json`
- Seed check: `tools/data/prime_sr_persistent_boundary_20260512_0330_seedcheck.json`
- Report: `tools/data/reports/agent_20260512_0330.md`
