Il kit, passi 1-5: la geometria esce da Topics senza cambiare un pixel - #13
Merged
Merged
Conversation
…stre e tre rapporti slabPointOnScreen e centreOn avevano 1920 e 1080 scritti dentro: valevano solo in 16:9. Adesso stanno in video/src/kit/rig.ts con stage, rig e lastra come parametri, insieme a zoomForPush, pushForZoom e pushForFill (la spinta che fa occupare a un rettangolo una frazione del quadro). slab.ts tiene tutti i suoi export e chiama il kit con i numeri di Topics: geometry-snapshot.mjs fotografa 38 costanti, sette pose e le funzioni su punti campione, e prima e dopo sono la stessa stringa. still-identity.sh rende cinque fotogrammi di ogni scena da main e da qui: trenta su trenta identici, e uno spostamento di un pixel lo boccia. L'origine della prospettiva e' una scelta del rig, non un risultato della geometria. drift.py lo prova sul render con sei specimen di CAM-06: la card di Topics e quella di una lastra sonda (chiara, verticale, scala 1, un prodotto che non esiste) in 16:9, 9:16 e 4:5. Il bersaglio resta entro 4 px dall'origine dal primo all'ultimo frame, 2,03 al peggio. Boccia in tutte e sei le varianti la spinta senza compensazione, e quella con lo spostamento calcolato sul 46% e il CSS al 50%, che parte esatta e scappa di 39,5-99,8 px come prevede la formula. scripts/manifest.mjs calcola dal kit cosa i banchi devono trovare. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Il piano attenuato dietro, lo spessore, la lastra e la luce sul quadro stavano ricopiati a mano in tutte e sei le scene, con prospettiva 2600, origine "50% 46%", (1920 - SLAB_W) / 2, scale(1.04) e i sette numeri di parallasse del piano dietro scritti in ogni copia, mentre i banchi misuravano costanti di slab.ts che nessuna scena leggeva. Adesso le scene passano a kit/Shot.tsx la posa e il contenuto, i numeri dell'aspetto di Topics stanno una volta sola in primitives/material.ts, e lo stage viene dalla composition. Le sei copie differivano in tre punti, che Shot prende come props: la dissolvenza del quadro in UIMockup, il cursore dentro la lastra in CardHandoff e PromptInput, il filo di luce sul bordo basso che PromptInput e BoardOrbit non hanno. SlabEdge e SlabLighting escono da SlabChrome, dove nessuno li usa piu'. still-identity.sh contro main: cinque fotogrammi per scena, trenta su trenta identici, strumento ripetibile. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…geometria al manifest kit/project.ts dice dove finisce sullo schermo un punto della lastra a una posa qualsiasi, rifacendo in aritmetica la catena CSS di Shot: scala, rotateX, rotateY, spinta, prospettiva attorno all'origine del rig. project-check.py la confronta con getBoundingClientRect di Chromium su 36 casi (due lastre, tre stage, le sei pose della catena di Topics, cinque punti ciascuno): errore massimo 0,040 px, e con l'origine sbagliata nel CSS arriva a 103,7 px e il banco se ne accorge. handoff-travel, focus-sharpness, fixture-screenshot e contrast-floor si calcolavano la geometria di Topics in uno script node dentro di se'. Adesso la chiedono a manifest.mjs, che la calcola una volta in video/src/manifest/topics.ts: uscite identiche riga per riga, fixture con lo stesso hash. no-product-literals.sh boccia un banco che torna a leggere video/src da se', e sui banchi del commit prima segnala esattamente quei quattro. In CI setup-node gira sempre, perche' il passo della pagina legge i moduli .ts del kit anche quando i render arrivano dalla cache. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ogni scena calcolava la camera dentro il componente: solo il render poteva dire la posa a un frame qualsiasi. kit/camera.ts la rende una traccia (una curva per asse) che poseAt legge con interpolate ed Easing di Remotion, con gli stessi argomenti delle scene. Le sei tracce stanno in primitives/tracks.ts e le scene le leggono. still-identity.sh accetta i fotogrammi da confrontare: identici a main anche nei frame 20-81 di UIMockup e attorno all'assestamento di PromptInput e BoardOrbit. Il cursore prende il frame della scena invece del proprio orologio. chain-check.py (GIU-04) legge le tracce lungo la catena: nessuna inversione in moto, sette inversioni tutte a giunte ferme; senza easing diventano in moto e il banco boccia. fill-geom.py (CAM-01) proietta la lastra con la posa di ogni frame: cinque scene coprono i quattro bordi con almeno 5,4 px, arretrate di 1500 le boccia tutte. Al primo giro ha bocciato BoardOrbit, e aveva ragione: l'orbita lascia scoperti i bordi apposta. La scena dichiarava fill e il vecchio banco sui pixel la promuoveva; ora non lo dichiara piu'. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ltro prodotto puo' usare La lastra, i token, l'arredo, il materiale, le tracce, la geometria dei banchi e le sei scene stanno in video/src/products/topics/. Fuori restano il kit, il cursore e gli aiuti frame-locked. Tolti i ponti di geometry.ts verso il kit: chi ha bisogno di una funzione di ripresa la chiama dal kit con stage e rig. Nessun numero cambia: geometry-snapshot da' gli stessi 140 valori di main, still-identity e' identico a main su tutte le scene e sulle finestre di UIMockup, PromptInput e BoardOrbit, i banchi del manifest stampano le stesse righe. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… pagina con lo script CAM-01 e GIU-04 hanno un banco dal passo 4: 31 su 36, 4 da scrivere, 1 fuori CI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Primo blocco del piano del kit: passi 1-5, solo refactor. Le sei scene di Topics escono identiche a main, fotogramma per fotogramma; quello che cambia e' dove sta il codice e cosa i banchi riescono a misurare.
Cosa entra
kit/stage.ts(16:9, 9:16, 4:5) ekit/rig.ts(prospettiva, origine, spinta per ingrandimento e per riempimento). CAM-06 ha il suo banco,drift.py, su due lastre (Topics e una lastra sonda sintetica) e tre rapporti: scarto massimo 2,03 px, i due negativi scappano di 39,5-99,8 px in 6 varianti su 6.kit/Shot.tsxprende il posto delle sei copie del rig CSS 3D che le scene si portavano dietro.kit/project.tsconfrontato con Chromium daproject-check.pysu 36 casi: errore massimo 0,04 px, 103,7 px con l'origine sbagliata. I quattro banchi che si calcolavano la geometria con unnode -einterno ora la chiedono ascripts/manifest.mjs, eno-product-literals.shboccia chi torna a farlo.kit/camera.ts(tracce,poseAt,checkChain) e le tracce di Topics. GIU-04 e CAM-01 hanno finalmente un banco:chain-check.py(7 inversioni, tutte a giunte ferme; senza easing diventano inversioni in moto e il banco boccia) efill-geom.py(5 scene coperte su ogni frame dal 20%; BoardOrbit non dichiara piu'fill, perche' l'orbita mostra i bordi apposta).video/src/products/topics/. Fuori restano il kit, il cursore e gli aiuti frame-locked, cioe' quello che un altro prodotto puo' usare cosi' com'e'.Come si sa che non cambia niente
still-identity.sh main: stessi sha256 dei PNG diremotion stillsu tutte le scene (primo, secondo, mezzo, penultimo, ultimo frame), piu' le finestre che i cinque di default non attraversano: UIMockup 20-81, PromptInput 125-300, BoardOrbit 100-140. Il negativo (una posa spostata di 1 px) esce 1.geometry-snapshot.mjs: 140 valori identici a main.fixture-screenshot.shha lo stesso hash.Da sapere
🤖 Generated with Claude Code