Skip to content

Update README.md - #2

Merged
Pinperepette merged 2 commits into
Pinperepette:mainfrom
adalseno:readme-fix
Jul 17, 2026
Merged

Update README.md#2
Pinperepette merged 2 commits into
Pinperepette:mainfrom
adalseno:readme-fix

Conversation

@adalseno

Copy link
Copy Markdown
Contributor

Fixed semicolons and $T_4$. Replaced the minus between T_2 and T_4 with a tilde

adalseno added 2 commits July 16, 2026 22:36
Fixed semicolons and $T_4$. Replaced the minus between T_2 and T_4 with a tilde
Fixed x-axis labels in figure at 4.2
@Pinperepette
Pinperepette merged commit 0577a41 into Pinperepette:main Jul 17, 2026
Pinperepette added a commit that referenced this pull request Jul 17, 2026
Pinperepette added a commit that referenced this pull request Jul 18, 2026
…e (tidwall/gjson), protocollo cieco, che valida la 2a lingua (1.22.0)

Dopo la n.2 su rich (Python, multi-file), la n.3 sposta la prova su cio' che la
1.22.0 ha appena introdotto: lo slice formale a simbolo in GO, su codice di
produzione e a scala nuova (un singolo file da 3650 righe).

Repo esterno: tidwall/gjson @ parent del fix dell'issue #192 (commit f0ee9eb).
Sintomo riprodotto DAVVERO sul parent: `panic: slice bounds out of range [:5]
with length 4` da `Get("0.#[[{}]].@Valid:\"000", ...)` (stringa quotata
incompleta). Stack trace Go con frame gjson.go:501 (=squash) e altri.

T2/T2b: i frame Go hanno pilotato la discesa a SIMBOLO sul monolite ->
slice Get/execModifier/parseArray/squash (~12.9k token, -58% del file-level
~30.5k) via i _go_symbol_targets della 1.22.0, su codice vero. Il file intero
(30.5k) era oltre un budget ragionevole: la 2a lingua ha retto la sufficienza
alla granularita' di simbolo.

T3: carta di 4 vincoli (niente panic / invarianza sugli input ben formati /
fix locale al case '"' / firma invariata). Fix scritto dalla SOLA slice di
squash: +3 righe (`if i >= len(json) { return json }` prima di
`return json[:i+1]` nel case quote) — BYTE-IDENTICO al fix upstream f0ee9eb,
derivato in cieco.

T4: panic sparito; edge case (quote incompleta, backslash finale, input ben
formato invariato) ok; SUITE gjson intera verde (8.77s, 0 regressioni);
answer-invariance = fix coincidente col parent-fixed upstream, e il test di
regressione upstream TestIssue192 PASSA sul fix cieco.

Documentata nella results table (glance) e in §4.3 (discesa a simbolo su
monolite reale). Nota di copertura onesta: questa prova esercita la #3 (slice
Go); la #2 (riferimenti dinamici) resta coperta da unit test + smoke sintetico
(gjson non ha import dinamici). Dettagli integrali nel quaderno.
Pinperepette added a commit that referenced this pull request Jul 18, 2026
…n DI framework reale (celery), che chiude la copertura della lista

La n.3 esercitava la #3 (slice Go) ma non la #2 (import dinamici): gjson non ne
ha. La n.4 colma il buco su un repo Python DI-pesante VERO — celery, 425
sorgenti — mostrando che la #2 recupera archi di runtime che il grafo statico
perde, senza mai indovinare.

Scenario (codice di produzione, non sintetico): celery/bin/shell.py importa DUE
moduli INTERNI al repo solo dinamicamente —
  import_module('celery.concurrency.eventlet')   (shell.py:133)
  import_module('celery.concurrency.gevent')     (shell.py:135)
e non li importa staticamente. Prova A/B, seed = shell.py:
- SENZA #2 (CK_DYNREF=0): la slice = {shell.py, __init__, bin/base.py};
  eventlet.py e gevent.py ASSENTI — il grafo statico non vede l'arco runtime.
- CON #2 (default): eventlet.py e gevent.py entrano come SEED col call site
  esatto, e con le loro dipendenze transitive (concurrency/base, signals,
  utils/time). Il modulo raggiunto solo a runtime non e' piu' escluso.

Lato "mai indovinare", su codice reale: seed su registry.py + fixups/django.py
-> punti ciechi DICHIARATI col call site, non seed inventati:
  - registry.py:67 (argomento non letterale: import_module(module))
  - django.py:137/138 ("django.db"/"django.core.cache" fuori repo)

Documentata nella results table (glance) e nel bullet §10 della #2. Con questa,
tutte e 5 le feature della lista hanno una validazione: #1/#5 unit+live, #3
prova n.3 (gjson), #2 prova n.4 (celery). Clone celery nello scratchpad
effimero. Nessun bump (docs, come n.2/n.3).
Pinperepette added a commit that referenced this pull request Jul 18, 2026
…cipo, deterministica (idea rubata a "Sufficient Context" ICLR 2025, ma calcolata non giudicata)

Ricognizione sui tool vicini (aider/LLMLingua/MemGPT/Sourcegraph) + il paper
"Sufficient Context" (Yu et al., ICLR 2025). Vincolo assoluto posto dall'utente:
NON diluire l'idea matematica di base (pi e' una PROIEZIONE answer-preserving,
non un ranker; l'inverso e' un access path, non un operatore). Filtrate le idee
contro questo, la piu' coerente e' la sufficienza: e' misura di distorsione (la
D del rate-distortion), vive in T4, NON tocca pi.

Definizione, nel nostro linguaggio: la proiezione P e' SUFFICIENTE per i seed
sse contiene la CHIUSURA answer-preserving R = chiusura BACKWARD delle
dipendenze dei seed sul grafo statico (imp_d=0: gli importatori sono
blast-radius, non richiesti dal comportamento del seed; lo slice def-use e'
backward). Se il budget/limite ristringe P, allora R\P e' esattamente
l'insieme dei PAGE FAULT ATTESI, dichiarati per nome nel manifest. E' il
segnale di astensione del paper, ma ESATTO: quando la slice e' insufficiente il
manifest dice DOVE rileggere invece di lasciar indovinare il modello. Nessun
autorater a modello: calcolo, non giudizio.

Fedelta' al nucleo: non tocca pi (misura, non proietta); scope onesto identico
al resto ("sufficiente SUL GRAFO STATICO", gli archi dinamici restano affare di
#2/page-fault); l'esclusione resta prior recuperabile (il gap non sparisce,
diventa un fault dichiarato col nome = l'inverso, non l'oblio).

repo_slice.py: sufficiency_gap(graph, seeds, refs, kept, imp_d) -> (coperti,
totale_R, [droppati]); wired in main + render (sezione "## sufficienza" nel
testo, campo "sufficiency" nel JSON con covered/closure/sufficient/
expected_faults).

Verifica su repo reali: celery no-budget SUFFICIENTE (80/80); celery budget 2000
INSUFFICIENTE 6/80 con 74 page fault attesi elencati; gjson SUFFICIENTE (il
fallback rende i file interi). +4 test (TestSufficiency). Un test esistente
aggiornato: util.py droppato dal budget non "sparisce" piu', e' dichiarato page
fault atteso (rafforzamento). Suite 375 passed (era 371). Carta 8/8
(charter-refresh ha ri-ancorato da solo #5 :1117->1159). README root+plugin
speculari: §1.7 (rate-distortion, aggancio ICLR) + §10 + riga tabella T2.
Pinperepette added a commit that referenced this pull request Jul 18, 2026
…egnale cold-start che T5 non ha

Quarta idea-vicina attuata (da yek/repomix, "priorita' da storia git"), ma nella
forma piu' difendibile: non il churn grezzo (non legato al task) bensi'
l'ACCOPPIAMENTO EVOLUTIVO. Se nella storia git i file X e Y sono stati toccati
negli STESSI commit, un task su X ha buone probabilita' di toccare anche Y
(logical coupling, segnale classico). E' ortogonale a T5: T5 impara da cosa hai
aperto TU in sessioni passate; il co-change vede cosa il REPO cambia insieme, ed
e' disponibile alla PRIMA sessione, quando T5 non ha ancora dati.

Fedelta' al nucleo (vincolo dell'utente): e' un PRIOR, stessa disciplina di T5
(charter #5). AGGIUNGE seed col motivo dichiarato ("co-cambiato col seed in N
commit (git)"), non esclude mai, non semina una slice da solo (gira solo se il
sintomo ha gia' prodotto seed). Recurrence >= 2 come le altre attuazioni di
prior (charter #2): un co-cambio isolato non basta. CK_CHURN=0 spegne; repo
non-git / git assente -> silenzioso (mai fatale).

repo_slice.py: git_cochange(root, seeds, fileset) -> [(file, n_commit)] via
`git log --name-only --pretty=format:@ -N`, conta i file che compaiono nei
commit che toccano un seed, soglia CHURN_MIN, cap CHURN_MAX; wired in main dopo
prior/dynamic seeds; HEAD sha nella chiave di cache (nuovo commit -> ricalcolo).
I seed co-change compaiono nella sezione "## seed" col motivo (nessuna modifica
a render). +4 test (TestGitCochange: prior aggiunto, co-change basso <2 escluso,
CK_CHURN=0, mai slice dai soli prior). Verifica live: repo con app.py+helper.py
co-cambiati 4 commit -> helper prior; unrelated (1) escluso. Suite 389 passed
(era 385). Carta 8/8. README root+plugin speculari: riga T2 + descrizione.
Pinperepette added a commit that referenced this pull request Jul 18, 2026
…rnati

Consolidazione, non feature (nessun bump di versione). Rende il prodotto
difendibile a un secondo lettore invece che aggiungere superficie.

(a) Giudizio A/B CHIUSO con lettura onesta 'quando conviene':
    - i campioni non sono piu' in attesa: 4 invarianti / 3 degradate su 153
      elisioni campionate dal traffico reale (ab_verify.py)
    - le 3 degradazioni condividono UNA forma: output Bash in cui il
      contenuto SEMBRA rumore ripetitivo ma E' il segnale (lista di ~40 nomi
      di simboli, header di hunk diff, sequenza numerica di step 045->104) —
      mai una Read di file
    - envelope onesto in tabella + §10: converge su codice strutturato/Read;
      rischia sugli output shell shape-heavy (i casi che # ck:raw e il canary
      auto-degrade esistono per intercettare)
    - Django HARD multi-hop (n=5): pareggio di correttezza 3/5 in entrambi i
      bracci -> vittoria di COSTO (-29% call, -12% token, -38% tempo), non di
      correttezza, e non monotona (un caso in cui il manifest ha sviato).
      Distinzione onesta: sufficienza (raise site presente) 100% != solve
      end-to-end su task hard

(b) Onboarding utente #2: nuova sezione 'Get started in 60 seconds' in alto
    (l'installazione era a riga ~790, dopo tutta la teoria). Install nativo
    Claude Code + primo risultato reale (slice da traceback) + puntatori a
    MCP tool e skill. §7 resta il riferimento completo.

Numeri aggiornati: 344->406 test (402 stdlib + 4 Pi) in header e §8.
Pinperepette added a commit that referenced this pull request Jul 18, 2026
…a vede diff e codice

Correzione di DIFETTO misurato (non feature): l'unico gap noto lasciato
aperto dalla consolidazione. Le 3 degradazioni A/B erano tutte output Bash
in cui il contenuto SEMBRA rumore ma E' il segnale, e la SIGNAL
log-oriented (error/fail/warn) non lo riconosceva.

Cosa: il ramo Bash di compress() ora usa _bash_signal invece della sola
SIGNAL. Aggiunge due riconoscitori STRUTTURALI:
- DIFF_STRUCT: header di hunk (@@ ... @@ func), diff --git, ---/+++ ->
  recupera funzione contenitore E numeri di riga (degradato #2, 'squash')
- CODE_SIGNAL dietro un prefisso di grep (file:NN: / NN: / NN-) ->
  recupera le dichiarazioni di codice da grep/dump di simboli (degradato
  #1, ~40 nomi di funzione)
La terza classe (continuita' numerica) era gia' dichiarata da
_numeric_continuity.

Mirato, non allarga i log ordinari: 'processing item 42 ok',
'2024: server started', 'INFO ready' restano rumore. Contro-fattuale
verificato: le righe grep/hunk erano False con la vecchia SIGNAL, True con
_bash_signal.

signal_preserving_truncate ora accetta un predicato (regex O callable) via
_sig; il ramo codice (CODE_SIGNAL) e log (SIGNAL) invariati. Solo ALLARGA
il segnale -> comprime meno, mai di piu' (coerente charter #4/#7).

+5 test (2 predicato coi contro-fattuali, 1 non-allargamento, 2 end-to-end
che recuperano le degradazioni nel mezzo). Suite 406 -> 411.
README §10 + tabella: il ciclo si chiude, misurato -> corretto -> testato.
Specchiati (charter #1). plugin.json 1.29.0 -> 1.29.1.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants