Skip to content

fix(deploy,#14445): reconstruire .deploy/Z3.Linq.dll — le correctif DateTime n'atteignait aucun notebook - #27

Merged
jsboige merged 1 commit into
mainfrom
fix/14445-deploy-dll-carries-datetime-fix
Sep 4, 2026
Merged

jsboige merged 1 commit into
mainfrom
fix/14445-deploy-dll-carries-datetime-fix

Conversation

@jsboige

@jsboige jsboige commented Sep 4, 2026

Copy link
Copy Markdown

Le defaut

Le correctif d'aller-retour DateTime (#26) a atterri dans les sources et leurs 87 tests, mais pas dans l'artefact que les notebooks chargent.

.deploy/*.dll est suivi par git depuis e09dae6 (« commit .deploy DLLs for fresh-clone #r resolution »), et 17 notebooks de jsboige/CoursIA s'y lient par #r "../Z3.Linq/.deploy/Z3.Linq.dll". La PR #26 a modifie ExpressionVisitor.cs et Theorem.cs sans reconstruire ce binaire.

Consequence mesuree : le blob .deploy/Z3.Linq.dll est byte-identique de part et d'autre du correctif.

ref blob .deploy/Z3.Linq.dll
e09dae6 (avant) 83f99013040dc820080902640a1e9fcf6fa3cd1c
6eab9579 (apres #26) 83f99013040dc820080902640a1e9fcf6fa3cd1c

Les 17 notebooks continuent donc d'executer l'ancien encodage file-time — c'est-a-dire exactement les deux defauts que #26 declare corriges.

Le controle, dans les deux sens

Un symbole qui apparait ne prouve rien seul ; ce qui discrimine, c'est que l'ancien disparaisse en meme temps.

symbole DEPLOYEE (ancienne) RECONSTRUITE (cette PR)
ToUtcTicks 0 1
ToFileTimeUtc 1 0
FromFileTime 1 0
FromFileTimeUtc 0 0

Portee minimale — et pourquoi c'est aussi un controle

Des quatre DLL deployees, une seule change :

DLL .deploy vs paquet epingle restaure
ExpressionUtils.dll identique (72e022da33e1)
Microsoft.Z3.dll identique (08220fa561ce)
libz3.dll identique (1cf7c29aae8a)
Z3.Linq.dll differe (74a242c1eacd -> abd7d898f930)

Les trois inchangees ecartent l'hypothese d'un bruit de reconstruction : si la chaine produisait des binaires non deterministes, elles auraient bouge aussi. Seul le projet dont la source a change bouge.

Verification

dotnet build -c Release   ->  0 avertissement, 0 erreur
dotnet test  -c Release   ->  echec : 0, reussite : 87, total : 87  (net8.0)

Execute localement sur .NET 10.0.111, sur le commit de cette branche.

Ce que cette PR ne fait pas

Elle repare l'instance, pas la classe. Rien ne relie aujourd'hui une modification de solutions/Z3.Linq/** a une reconstruction de .deploy/** : le meme ecart peut se reproduire au prochain correctif, avec la meme signature silencieuse (sources vertes, tests verts, notebooks sur l'ancien binaire). Un garde dedie est a ouvrir cote fork ; je le trace separement plutot que de l'melanger a une reparation qui doit rester lisible.

Ref : #26, #14445, jsboige/CoursIA#14169 (grain G5).

…eaches the notebooks

The round-trip fix landed in the sources and its 87 tests, but not in the
artifact the notebooks actually load. `.deploy/*.dll` is git-tracked (e09dae6,
"commit .deploy DLLs for fresh-clone #r resolution") and 17 CoursIA notebooks
bind to it via `#r "../Z3.Linq/.deploy/Z3.Linq.dll"`. PR #26 changed
ExpressionVisitor.cs and Theorem.cs but did not rebuild that binary, so the
blob was byte-identical across the fix (83f9901 both sides) and every notebook
kept running the old file-time encoding.

Measured, with the control in both directions:

  symbol            deployed(old)   rebuilt(new)
  ToUtcTicks              0              1
  ToFileTimeUtc           1              0
  FromFileTime            1              0

Only Z3.Linq.dll changes: ExpressionUtils.dll, Microsoft.Z3.dll and libz3.dll
are byte-identical to what the pinned packages restore, which also rules out
spurious rebuild noise.

dotnet test Release: 87/87 passed, 0 failed (local, net8.0).

See #14445, jsboige/CoursIA#14169 (G5).
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

Test Results

87 tests  ±0   87 ✅ ±0   3s ⏱️ ±0s
 1 suites ±0    0 💤 ±0 
 1 files   ±0    0 ❌ ±0 

Results for commit 50778ba. ± Comparison against base commit 6eab957.

@jsboige
jsboige merged commit 20984bf into main Sep 4, 2026
7 checks passed
jsboige added a commit to jsboige/CoursIA that referenced this pull request Sep 4, 2026
…DateTime atteint enfin les 17 notebooks (#14605)

Le bump precedent (#14594, gitlink 6eab9579) a porte le correctif d'aller-retour
DateTime dans les sources de Z3.Linq et leurs 87 tests, mais pas dans l'artefact
que les notebooks chargent : `.deploy/Z3.Linq.dll` est suivi par git et 17
notebooks s'y lient par `#r "../Z3.Linq/.deploy/Z3.Linq.dll"`. Le blob etait
byte-identique de part et d'autre du correctif (83f99013), donc les 17 notebooks
tournaient encore sur l'ancien encodage file-time.

Controle positif sur le blob `.deploy/Z3.Linq.dll` a travers les trois refs du fork :
  e09dae6    (avant correctif) -> 83f99013040d
  6eab9579   (bump precedent)  -> 83f99013040d   IDENTIQUE : reproduit l'echec
  20984bfdf9 (ce bump)         -> 552613aae72d   DIFFERENT : binaire reconstruit

La ligne du milieu est ce qui donne sa valeur aux deux autres : elle mesure
l'echec exact que cette PR corrige, sur l'objet exact qu'elle corrige.

Symboles dans la DLL reconstruite : ToUtcTicks 1, ToFileTimeUtc 0, FromFileTime 0
(avant : 0 / 1 / 1). 55808 octets contre 52736.

Reconstruit par la PR fork MyIntelligenceAgency/Z3.Linq#27, mergee ; le commit
20984bfdf9 est atteint depuis `origin/main` du fork (il en est la tete), donc
l'ordre sous-module puis parent de submodule-maintenance.md est respecte.

Exposition mesuree : 0 des 17 notebooks n'utilise DateTime, donc aucun changement
de comportement attendu. Artefact verifie sous le mode de liaison par chemin des
notebooks : SOLVE -> x=3, y=4, contraintes satisfaites, rc=0.

Classe du defaut tracee cote fork : MyIntelligenceAgency/Z3.Linq#28.

See #14169 (G5), #14445.
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