Handoff — verdetto su ds4l (lambda 1.25): BOCCIATA
04-08-2026, notte. Campagna eseguita, kill-check applicato. Il box è libero, con l'ufficiale su :30001/:30009.
Verdetto: bocciata, ma non per niente
Kill-check dichiarato prima di guardare i risultati:
| criterio | soglia | lam 1.25 | esito |
|---|---|---|---|
| TC-07 (catena 4 tool dipendenti) | ≥ 90% | 72,5% | ❌ |
| TC-14 (recupero da tool malformato) | ≥ 45% | 20,0% | ❌ |
| rifiuti (16 prompt) | ≤ 4/16 | 0/16 | ✅ |
Il controllo di deriva passa, quindi il confronto è valido: le 20 ripetizioni di controllo sull'ufficiale in giornata danno TC-07 95,0% e TC-14 55,0%, contro 97,5% e 55,0% misurati la notte prima. Zero ripetizioni fallite su 60.
I tre modelli sulla stessa scala
| ufficiale | lam 1.25 | lam 1.50 (squanchyzx) | |
|---|---|---|---|
| TC-07 pass | 95,0% (19/20) | 72,5% (29/40) | 57,5% (23/40) |
| TC-14 pass | 55,0% (11/20) | 20,0% (8/40) | 12,5% (5/40) |
| rifiuti | 2/16 | 0/16 | 0/16 |
| punti/run sui 2 scenari | 3,500 | 2,925 | — |
Test sui punti, lam125 contro ufficiale: TC-14 Holm p = 0,0166 (regressione confermata), TC-07 Holm p = 0,0822 (Fisher sul solo pass 0,0466 — al limite, non lo dichiaro confermato). Aggregato sui due scenari: p = 0,0019.
Cosa ha risposto l'esperimento
L'ipotesi era: il danno viene dall'inversione (a lambda 1.5 la componente del rifiuto non è rimossa ma portata a −0,5), quindi dimezzandola si recupera la capacità tenendo la de-censura.
Risposta: parzialmente vero, e insufficiente. Dimezzare l'inversione recupera
- 40% del divario su TC-07 — (72,5 − 57,5) / (95,0 − 57,5)
- 18% del divario su TC-14 — (20,0 − 12,5) / (55,0 − 12,5)
mentre la de-censura resta piena (0/16). Quindi esiste un gradiente reale fra lambda e danno, ma la sola rimozione costa già molto: non c'è un lambda che de-censuri e non paghi. A lambda 1.0 il danno sarebbe minore ancora, ma il suo sweep pubblicato dice che a 1.0 i rifiuti non scendono (75%, come a 0,75) — quindi quella strada non porta a un modello uncensored.
Detto in modo utile: su questo modello, rifiuto e capacità di portare avanti lo stato di una catena condividono lo stesso sottospazio dell'attention, in modo graduale. Si scegli un punto sulla curva, non si ottengono entrambe le cose.
Stato operativo — non cambia niente
- daily =
yz start ds4(ufficiale). È quello che gira ora. ds4h(lam 1.50) eds4l(lam 1.25): solo chat/scrittura unfiltered. Fra i due,ds4lè strettamente migliore — stessa de-censura sui nostri probe, meno danno — quindi se serve unfiltered, usads4l, nonds4h.- Disco: le due varianti occupano 87G ciascuna. Se serve spazio, la prima da cancellare è
~/models/ds4-0731-heretic/(dominata da lam125), tenendohf/che è solo 1,2G di overlay e serve a rifare qualunque bake.
L'unica ipotesi rimasta non testata
Il lambda è un asse. L'altro, mai provato, è quali layer editare: tutti i bake finora toccano 10-42. I layer tardivi (31-42) sono i più probabili portatori dello stato della catena, ed è lì che TC-07/TC-14 falliscono.
# copia + bake solo sui layer bassi, ~15 min di CPU
ionice -c3 dd if=~/models/ds4-0731/DeepSeek-V4-Flash-IQ2XXS-...-imatrix-0731.gguf \
of=~/models/ds4-0731-lo/...-LO-attn.gguf bs=8M iflag=nocache oflag=nocache conv=fsync
python3 ~/llm/bake-attn-subspace.py --lam 1.5 --layers 10-30 --gguf ~/models/ds4-0731-lo/...gguf
python3 ~/llm/verify-subspace-gain.py --official <uff> --edited <nuovo> --lam 1.5 --layers 10-30 --sample 5
python3 ~/llm/verify-heretic-splice.py --official <uff> --patched <nuovo> --layers 10-30
Poi lo stesso bench, cambiando i tre pattern in una copia di night-lam125.sh. Stesso
kill-check: TC-07 ≥ 90%, TC-14 ≥ 45%, rifiuti ≤ 4/16. Se anche questo fallisce, il filone
abliteration su ds4 si chiude: resta uno strumento da chat e basta.
Nota di aspettativa, dichiarata prima: se il rifiuto è distribuito su tutti i layer, editare solo 10-30 abbasserà anche la de-censura, e finiremo nello stesso trade-off. La ragione per provare è che il costo è un pomeriggio di CPU e il beneficio, se i layer tardivi sono davvero quelli critici, è un modello uncensored che regge l'agentico.
Trappole trovate oggi, tutte già corrette negli strumenti
local a=1 b=$anon funziona come sembra. Bash espande tutta la riga prima di eseguirelocal, quindilocal arm="$1" f=".../$arm-..."vede$armnon assegnato e conset -uammazza il processo. Mi ha ucciso 3 campagne di fila; innight-heretic-power.shlo stesso bug era mascherato perché il ciclo assegnavaarmcome globale prima della chiamata. Corretto in entrambi (duelocalseparati) con la spiegazione in-linea.- Se un job in background muore muto, redirigi lo stderr al primo tentativo. La riga esatta
era disponibile dal primo minuto; io ho incolpato il harness per due giri prima di catturarla.
I runner ora si lanciano
2> <dir>/script.err, e vanno in tmux perché fuori non sopravvivono al teardown dei task. - L'analizzatore scartava in silenzio i bracci con nomi nuovi (accettava solo
ufficiale/heretic): con la cartella piena diceva "servono 2 bracci". Ora i nomi si deducono dai file. - Il check di Think Max grepava testo troncato a 160 caratteri →
NOsu risposte corrette. Ora controlla il testo intero. - Il byte-compare non valida un lambda: in Q8_0 una differenza minima cambia ~56% dei byte,
uguale a due matrici diverse. Serve
verify-subspace-gain.py(spazio dei valori, guadagno con segno — un rapporto di norme non distingue lambda 0 da lambda 2). - L'asimmetria fra bracci non è per forza un guasto: il messaggio dell'analizzatore diceva "qualche ripetizione è fallita" anche su un disegno 40/20 riuscito. Ora distingue e dice come verificare.
File
| percorso | cosa |
|---|---|
~/llm/bench-heretic/lam125/ |
60 JSON + run.log + script.err |
~/llm/night-lam125.sh |
il runner (lanciare in tmux, SKIP_PROBE=1 se la batteria è già fatta) |
~/llm/night-heretic-analyze.py |
analisi, --dir sulla cartella della campagna |
~/llm/bake-attn-subspace.py |
bake a lambda/layer arbitrari |
~/llm/verify-subspace-gain.py · verify-heretic-splice.py |
le due verifiche, complementari |
~/llm/bench-heretic/{lam125,probe-lam125}.log |
i 16 prompt di rifiuto + tool-call + reasoning |
HF privato GaelicThunder/DeepSeek-V4-Flash-0731-HERETIC-attn-splice-ds4 |
tutto, con i log grezzi |