feature/fleur #7

Merged
Nora merged 43 commits from feature/fleur into develop 2026-10-26 22:14:15 +00:00
Owner
No description provided.
Nora added 43 commits 2026-10-26 20:48:40 +00:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
main.js et LICENSE au commit 03b653d220f16c6bed7ea9c7edc852f7e91846cb de
LingDong-/nonflowers (raw.githubusercontent.com), SHA-256 vérifié avant
copie : 538ff945…ba14. third_party/ ignoré par ESLint, seule exception
de max-lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
loadNonflowers({ seed }) exécute third_party/nonflowers/main.js dans un
contexte vm (faux DOM, console muette, minuteurs empilés). Test 6 adapté :
la graine arrive percent-encodée, comme dans le navigateur (RETOUR-A.md).
Durée du fichier de test : ~0,15 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Test 5 : generatePlant (O137) absent de cette branche, 2 000 quads tirés
seulement (dont pétales repliés et effilés).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
Chaque chemin peint sur un canvas de 1 200 px (taille lue à getContext)
devient { kind, pts, style } dans l'ordre de peinture ; les autres canvas
ne gardent qu'un compteur d'appels. fill+stroke de styles différents lève.
Durée du fichier de test : ~0,2 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
runOriginal(seed) joue load() puis les minuteurs (10 ms _makeBG, 100 ms
_load) sous le garde-temps, rend le type, les deux calques enregistrés et
Prng.s final. primeNoise et withState pour l'état imposé ; stubPixels
prouvé équivalent aux boucles de pixels réelles (graine a17).
toDataURL ajouté au faux canvas (appelé par _makeBG).

Durées : fichier run.test.js ~170 s (test 2, vingt graines : ~90 s ;
test 3, stub contre real sur a17 : ~70 s) ; suite complète ~200 s.
Graines pour O137 : woody a19, herbal a17.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TVabJFD3pZw5Qp2aNA1mCu
createPrngNf(seed) reproduit Prng.s de l'original après Math.seed (200
graines) et la même suite de 10 000 tirages ; base64 Latin-1 écrit à la
main ; graine bloquée (hash au-delà de 2^53) et hors Latin-1 refusées
(null). Durée du fichier de test : ~0,6 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
createNoiseNf(prng) tire ses 4 096 valeurs au premier noise(), comme
Noise.noise de l'original, et rend les mêmes octets sur 10 000 points ;
table() lisible pour le contrat. Durée du fichier de test : ~0,3 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Outils vectoriels et aléatoires de l'original portés à l'identique
(.x/.y/.z en [0]/[1]/[2], [-1] en .at(-1)) ; PRNG passé en argument.
Mêmes octets que l'original sur rotvec, roteuler, cross, ang, lerp,
toeuler (300 vecteurs), grot, et mêmes tirages consommés.
Durée des deux fichiers de test : ~3 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Conflit eslint.config.js : bloc fleur/ gardé, bloc src/ retiré par O116.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tubify et lerpHue rendent les mêmes octets que l'original ; rgba8 et hsv
rendent la couleur que le Canvas retient de la chaîne CSS (floor puis
écrêtage, alpha toFixed(3) écrêté puis arrondi 8 bits). hsv suit
l'original pour les teintes de −180 à 0 (getters "-1".."-3", voir
RETOUR-A.md). Durée des deux fichiers de test : ~0,4 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
burnPapers(prng, noise) consomme le PRNG et tire la table de Perlin
comme les deux paper() de la page (fond _makeBG tex 10 spr 0, puis tuile
de generate), court-circuit de || compris, sans calculer de pixel.
tex absent de la signature (sans effet sur le hasard, refusé par
no-unused-vars). Durée du fichier de test : ~34 s (test 1, dix états,
20 papiers de chaque côté : ~26 s).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
createRecorder() reçoit les polygones dans l'ordre de peinture ;
polygon et stroke produisent les mêmes enregistrements que l'enregistreur
Canvas de l'oracle (géométrie, kind, couleur rgba8, calque) et stroke rend
la même valeur (vtxlist1 inversé sur place). Durée du fichier de test :
~0,3 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
stem(nf, args) reproduit stem de l'original : mêmes primitives dans le
même ordre (quads fill+stroke puis deux stroke noirs), même polyligne,
mêmes tirages ; défauts au sens != undefined. Cas par défaut, tige
herbal et pédicelle, 10 états chacun. Durée du fichier de test : ~0,8 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
leaf(nf, args) reproduit leaf de l'original dans ses modes : nervures
vei 1 et vei 2, sans nervure (pétale, flo), cof qui rend NaN (lt = 0).
Mêmes enregistrements, même polyligne et même Prng.s final que
l'original, 10 états par cas. Durée du fichier de test : ~0,9 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
branch(nf, args) reproduit branch de l'original : jointures tirées,
stem avec largeur et courbure de jointure, enfants récursifs (condition
i < frk * next() réévaluée à chaque tour, rot, len, wid tirés dans
l'ordre de l'objet littéral) ; mêmes enregistrements, même liste rendue,
même Prng.s final. Durées : fichier ~3 s, dont « branche de woody »
(3 états, dep 4, frk 7) ~1,6 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
genParams(nf) rend les mêmes paramètres que l'original (33 clés, dont
28 non fonctionnelles ; la spec en annonçait ~40), fonctions comprises,
en consommant les mêmes tirages ; bogue flowerShapeNoiseSeed de leafShape
gardé, tirages jamais lus (leafShapeNoiseSeed, curveCoeff1, curveCoeff3)
gardés. 50 états. Durée du fichier de test : ~2,2 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
woody(nf, PAR) et herbal(nf, PAR) produisent sur les calques 0 et 1 les
mêmes primitives que l'original, dans le même ordre, avec les mêmes
tirages (bornes réévaluées, normRand multipliés par 0 tirés, captures de
boucle, feuilles de base sans col). Layer.filter/bound/blit/border non
portés : aucun tirage. États herbal couvrant leafPosition 1 et gaine
notés dans le test. Durées : woody ~8,8 s (a17, avec fleurs : 7,4 s),
herbal ~3,2 s, fichier ~12 s.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJyvgUsDHEZHFTnEt5Ywmk
Écarts de RETOUR-A.md reportés dans les spécs (O122 graine encodée et
btoa, O124 notes, O129 domaine de hsv, O135 nombre de clés, graines
repères pour O137), puis le rapport supprimé.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Vingt graines a0 à a19 comparées à l'oracle, calque par calque (kind,
géométrie, couleurs) : octets identiques. Temps sous Node par plante
(générateur seul, Docker) : min 0,08 s (a12, a17), max 0,96 s (a7).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs : Worker et cache par plante reportés en phase J
All checks were successful
CI / OceanPrint - tests + lint JS (pull_request) Successful in 5m51s
e1c2c3e9ea
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nora merged commit f15cd57bf7 into develop 2026-10-26 22:14:15 +00:00
Nora deleted branch feature/fleur 2026-10-26 22:14:16 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Nora/OceanPrint!7
No description provided.