Skip to content

Due banchi che non potevano fallire: uno ora boccia, l'altro esce dalla CI - #12

Merged
antoninobig-beep merged 1 commit into
mainfrom
kit-0-banchi-onesti
Sep 15, 2026
Merged

antoninobig-beep merged 1 commit into
mainfrom
kit-0-banchi-onesti

Conversation

@antoninobig-beep

Copy link
Copy Markdown
Collaborator

Primo passo del piano per trasformare scenes in un kit che funzioni con qualsiasi prodotto. Prima di costruire sopra i banchi, i banchi devono poter fallire. Due non potevano.

framelocked-verdict.sh: il verdetto non usciva

Stampava "almeno un frame diverge" ed usciva 0 comunque. In CI una divergenza vera sarebbe passata col verde.

  • Esce 1 su una divergenza o su una timeline ferma, 3 se un render non esce (lo strumento non ha misurato, e un verdetto sulla scena sarebbe inventato).
  • Accetta le composition come argomenti, e i frame da FRAMES.
  • In CI gira anche su PromptInput ai frame 150, 175 e 200, cioè durante la digitazione: è lì che un caso non seminato romperebbe TXT-01.
  • Controllo negativo in CI: FrameLockedProbeRandom, la stessa sonda con un Math.random dentro, deve uscire 1. Lo spostamento arriva fino a 400 px. A 40 px Chrome allineava al pixel intero e due render coincidevano per caso: sul Mac è successo al primo tentativo (una probabilità su 40 per frame). A 400, tre frame su tre coincidono una volta su 64 milioni.

fill-measure.sh: il verdetto non si può dare dai pixel

Diceva 20 su 20 anche sul difetto che dovrebbe trovare. Misurato: ui-mockup.mp4 ridotto al 60% col colore vero del fondale intorno (#1B1C20) legge 28,79 su tutti e quattro i bordi. Il fondale delle scene ha luminanza intorno a 20, e la soglia è 2: era giusta per OrbitLoop, che aveva il fondo nero.

Ho provato anche la tessitura locale (varianza 3×3 del bordo contro quella del centro), e non separa i due casi:

  • 0,014 su card-release, con la lastra in quadro;
  • 0,043 su board-orbit, dove i bordi mostrano il fondale apposta.

Il piano attenuato dietro la lastra (MAT-03) è la board ridisegnata e sfocata, e per qualunque misura sui pixel è contenuto.

Quindi il riempimento si verifica con la geometria: proiettare la lastra ai frame campionati e chiedere che copra i quattro bordi. Quel banco arriva con il rig parametrico, in un passo successivo. Fino ad allora:

  • lo script resta come lettura, con l'avviso stampato;
  • catalog.mjs measures non lo genera più (il campo fill resta nel catalogo come promessa);
  • CAM-01 va in grigio.

La pagina si conta da sola

La frase "Thirty-two of the thirty-six name a bench that exists and runs in CI" era falsa. Adesso si calcola dai dati delle voci, e il testo di ripiego senza script dice la stessa cosa:

  • 29 voci hanno un banco che esiste, gira in CI e può fallire;
  • 6 nominano un banco non ancora scritto: le quattro di prima, più CAM-01 e GIU-04, il cui controllo sul segno della derivata non esiste;
  • 1 nomina un banco che esiste ma non gira in CI: CAM-03, perché legibility.sh legge i film di riferimento, che non sono in git. Ha un'etichetta sua: "The bench it has, not run in CI".

Tabella dei banchi e README corretti allo stesso modo, compreso "twenty-six movements", che sono trentasei.

CI

  • La run completa di main del 13 settembre è durata 23:41 su un limite di 25 minuti. Il limite passa a 40, con un commento: la cura vera è dividere il lavoro in job paralleli, e arriverà prima dei passi che aggiungono render.
  • Saldo di tempo di questo passo: circa +30 s per le 12 immagini in più, circa −20 s per fill-measure tolto.

Verifica

In locale, estraendo i passi dal workflow ed eseguendoli con bash -e ... < /dev/null:

  • misure: exit 0 in 134 s. Giunte 66×–2340× peggiori nel taglio di controllo, la card attraversa 211 px, nitidezza 2,10×, clic a f271 → f276, contrasto 4,25:1, tempo ritempificato.
  • controlli negativi: exit 0 in 89 s. La sonda con Math.random viene bocciata; focus-sharpness, rest-point, click-gap, contrast-floor e tempo bocciano le loro fixture. La prova di beats.sh senza tesseract l'ho saltata in locale perché serve sudo, e quel passo non è cambiato.
  • pagina: exit 0 in 180 s. demo-check, loop-close e type-check a 390 e 1440 px, con tutte e otto le copie guaste bocciate nominando la voce.
  • npm run lint pulito.
  • Nel browser la pagina mostra 36 voci, 7 in grigio, la frase calcolata identica al testo di ripiego, e nessun errore in console.

🤖 Generated with Claude Code

…la CI

framelocked-verdict.sh stampava il verdetto ed usciva 0 comunque. Ora esce 1
su una divergenza e 3 se un render non esce, accetta le composition come
argomenti e gira anche su PromptInput nei frame della digitazione (TXT-01).
La CI lo prova su FrameLockedProbeRandom, la stessa sonda con un Math.random
dentro, spostato fino a 400 px: a 40 Chrome allineava al pixel e due render
coincidevano per caso.

fill-measure.sh dava 20 su 20 anche su una lastra ridotta al 60% col fondale
vero intorno: il fondale delle scene ha luminanza intorno a 20 e la soglia e' 2.
Nemmeno la tessitura separa i due casi, per via del piano attenuato dietro la
lastra. Resta come lettura, esce dalle misure generate dal catalogo, e CAM-01
va in grigio finche' il verdetto sul riempimento non sara' geometrico.

La pagina conta i banchi dai propri dati invece di scriverlo a mano: 29 su 36
possono fallire in CI, 6 non sono scritti (CAM-01 e GIU-04 si aggiungono) e 1
esiste ma non gira in CI (CAM-03, legibility.sh vuole i film di riferimento).
La tabella dei banchi e il README dicono lo stesso.

La run di main durava 23:41 su un limite di 25 minuti: il limite passa a 40,
col commento che la cura vera e' dividere il lavoro in job.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@antoninobig-beep
antoninobig-beep merged commit 9222f02 into main Sep 15, 2026
1 check passed
@antoninobig-beep
antoninobig-beep deleted the kit-0-banchi-onesti branch September 15, 2026 10:21
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.

1 participant