chore(release): 0.3.0 - #291
Merged
Merged
Conversation
Le jalon compte huit issues, et un fil commun qui vaut d'être nommé : **ce qui ne peut pas être vérifié ne doit pas conclure**. Il court de la politique d'URL — une valeur de catalogue est une donnée, jamais une instruction — jusqu'au job qui provisionne une vraie VM, en passant par le socle dont le marqueur ne s'écrit qu'après un succès. Ce que la version apporte : - une politique d'URL centrale pour les valeurs venant d'un catalogue non fiable, et un affichage qui ne lui obéit plus (#273) ; - `learning.portal_url` : chaque catalogue déclare son portail, le moteur n'en connaît aucun (#269) ; - `dsoxlab export --lab` et `--out` : une preuve unitaire, en fichier ou en copier-coller (#271) ; - un lien de remise après `submit`, la preuve dans un fragment d'URL, et rien d'envoyé (#270) ; - `infra.bootstrap` : le socle d'un catalogue, joué une fois après le provisionnement (#213) ; - les invariants du projet écrits, chacun avec le bug qui l'a révélé (#200) ; - un job de CI qui provisionne et détruit une vraie VM KVM (#243) ; - `lab_type: validation` et `prerequisites`, arrivés en début de jalon. Deux corrections qui concernent directement les utilisateurs : - l'appliance s'importe enfin sous VMware. L'empreinte du manifeste n'était pas celle que son lecteur calcule — 64 512 octets d'écart, mesurés sur le fichier publié — et l'identifiant d'OS la ramenait à un profil 32 bits (#279) ; - une coupure réseau n'est plus rendue comme un défaut de lab (#224). La documentation a été relue en entier avant ce tag. La relecture a trouvé onze points bloquants, dont deux défauts de code introduits pendant ce même jalon : un `destroy` qui laissait le socle « posé » alors que ses machines n'existaient plus, et une variable de sécurité qui s'activait sur `0`. Les deux sont corrigés, et chacun porte son test. Co-Authored-By: Claude Opus 5 (1M context) <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.
Summary
La préparation du tag
v0.3.0: version, sections de CHANGELOG, liens de comparaison,uv.lock.Le jalon compte huit issues, et un fil commun qui vaut d'être nommé : ce qui ne peut pas être vérifié ne doit pas conclure. Il court de la politique d'URL — une valeur de catalogue est une donnée, jamais une instruction — jusqu'au job qui provisionne une vraie VM, en passant par le socle dont le marqueur ne s'écrit qu'après un succès.
Ce que la version apporte
learning.portal_url: chaque catalogue déclare son portail, le moteur n'en connaît aucundsoxlab export --labet--out: une preuve unitaire, en fichier ou en copier-collersubmit, la preuve dans un fragment d'URL, et rien d'envoyéinfra.bootstrap: le socle d'un catalogue, joué une fois après le provisionnementlab_type: validationetprerequisitesDeux corrections qui touchent directement les utilisateurs : l'appliance s'importe enfin sous VMware — l'empreinte du manifeste n'était pas celle que son lecteur calcule, 64 512 octets d'écart mesurés sur le fichier publié, et l'identifiant d'OS la ramenait à un profil 32 bits (#279) ; et une coupure réseau n'est plus rendue comme un défaut de lab (#224).
La documentation a été relue en entier avant ce tag
C'était la condition posée. La relecture a trouvé onze points bloquants, dont deux défauts de code introduits pendant ce même jalon :
destroylaissait le marqueur du socle, si bien qu'unprovisionsuivant le sautait et que les labs tournaient sur une machine nue — la panne même queinfra.bootstrapdevait supprimer ;DSOXLAB_PORTAL_LOCAL=0activait la dérogation de sécurité, la valeur n'étant testée que non vide.Les deux sont corrigés, et chacun porte son test. Le reste de l'audit — 19 inexactitudes et 9 remarques — a été appliqué, sauf les points de forme.
État des contrôles avant tag
scripts/check-release.pysur cette branche :Les deux contrôles restants exigent un arbre propre et la branche
main: ils passeront après ce merge, et je les rejoue avant de poser le tag.Type of change
Checklist
Always
uv run ruff check …passesuv run mypy src/dsoxlabpasses (strict)uv run pytestpasses — 1280 testsuv run pytest tests_e2epassescheck-release.pyjoué,uv lockconfirmant que la seule ligne à changer était celle de la versionWhen behavior changes
[0.3.0] - 2026-09-30et son lien de comparaisonpyproject.tomletuv.lock— c'est l'objet de cette PR.__version__la lit parimportlib.metadata, donc rien à synchroniser danssrc/dsoxlab/__init__.pyWhen a command or option is added, removed or changed
When
.github/workflows/is touchedrelease.yml(PyPI) etappliance.yml(les images), qui existent déjà.When the declarative contract changes
Ce que le tag déclenchera
La publication PyPI, et la reconstruction de l'appliance avec l'OVA corrigée — c'est elle qui débloque les utilisateurs VMware.
🤖 Generated with Claude Code