chore(ci): close two pin gaps found by #945 — Playwright ignore was a no-op, OWLSharp major breaks the build - #947
Merged
Merged
Conversation
… no-op, OWLSharp major breaks the build The first grouped nuget PR under the #910 policy (#941) was superseded by dependabot itself with #945, and #945 is the measurement that shows two defects in the pin list merged as #943. 1. The Microsoft.Playwright entry was `update-types: ["version-update:semver-major"]`, which is a NO-OP for that package: it has never left the 1.x line (1.0 -> 1.61), so a semver-major update cannot fire. #945 proposed 1.43.0 -> 1.61.0 as a MINOR and the filter let it through. Found by po-2024's review on #945, confirmed firsthand against the PR's package delta. Now pinned on ALL update types, like QuestPDF. An ignore entry is only as strong as the package's versioning scheme. 2. OWLSharp / OWLSharp.Extensions 4.x -> 5.x breaks the build: 10 compile errors, all in Ontology/OwlAdapter.cs, all `RDFResource` -> `OWLNamedIndividual` (SKOSHelper changed its signatures). The try/catch fallbacks around those five call sites guard runtime, not compile, so the build never reaches the 638 tests. OWLSharp was deliberately left unpinned as "a major to test on its merits after the tag"; #945 ran that test and the answer is "needs an API migration", now issue #946 with its DoD. The pin is the corollary of that scheduled work, not a way to silence a red build. Also recorded, both deliberately NOT changed: - dotNetRdf stays unpinned. The #945 review first attributed the OwlAdapter break to dotNetRdf 3.3.2 -> 3.5.2; re-measured, that is wrong (VDS.RDF is used elsewhere in the file, the bump is a minor, and RDFSharp.RDFResource is the type our code passes, not the one that moved). Pinning it would have been an over-pin bought on a mis-attribution. - SkiaSharp keeps major-only. #945 delivered 2.88.6 -> 2.88.9, a patch inside the 2.88.x line QuestPDF 2022.12.12 links against — the pin working as intended, not a leak. Labels nuget / npm / vendored created in the repo: they were referenced by this file but did not exist, so dependabot posted a "labels could not be found" comment on all 27 open PRs. Noted in the header so they are not deleted without editing the config. Refs #942, #945, #946 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This was referenced Jul 26, 2026
jsboige
added a commit
that referenced
this pull request
Jul 27, 2026
…publish (#951) (#953) MEASURED on #949 (run 89854763158, `build (Release)`): 643 tests, 636 passed, 2 failed, and the two failures are exactly the GetId contract guards -- VirtueOwlGenerationContractTests.GetId_StripsApostrophesHyphensCommas [40 ms] OwlGetIdPureContractTests.FrenchFallacyName_ProducesFragment_AccentsPreserved [1 ms] Both assert GetId("Appel a l'autorite") == "appelALautorite" (accents preserved); both pass on master, verified locally 10/10 on the filtered run. GetId is Camelize plus a Replace chain, so Humanizer IS the transform, and v3 is a declared breaking major -- upstream ships a Roslyn analyzer for its own namespace migration. Why this outranks "two red tests": those fragments are the identity of the published ontology (1 408 fallacy IRIs, 223 virtue IRIs). A silent Camelize change renames every accented term's IRI on the next regeneration -- green build, no diff in our code, broken external consumers (#133 publication, CoursIA import). Same shape as the licence findings already in this file, one axis over: a package can change identity-bearing OUTPUT with nothing announcing it. Majors only, and here that filter is NOT the no-op it was for Playwright (#947): Humanizer's break sits on the major boundary. The shared rule is that the right update-types depends on where the package puts its break -- measure, don't copy. The pin carries its deferred work, per the admission bar at the top of this file: issue #951 holds the v3 migration and the prior question of whether published IRIs may change at all, which is jsboige's call, not ours. Refs #951, #949, #911, #133 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.
Ce que #945 a mesuré sur la politique elle-même
#941 (le premier groupe nuget) a été superseded par dependabot lui-même —
Superseded by #944, puis #945. Ma note « ne la fermez pas pour faire propre » a été postée 3 minutes après que dependabot l'avait déjà fermée : j'ai écrit une consigne de procédure sans re-vérifier l'état de la PR. La règle « lire avant d'agir » vaut aussi pour l'état, pas seulement pour le corps.#945 régénère le groupe, et il est utile pour une raison qui n'était pas prévue : il traverse deux épingles que #943 croyait avoir posées.
1. L'épingle Playwright était décorative — trouvée par po-2024, confirmée firsthand
Microsoft.Playwrightn'a jamais quitté la ligne 1.x (1.0 → 1.61 en juillet 2026). Unsemver-majorn'existe pas pour ce paquet. #945 a donc proposé 1.43.0 → 1.61.0 en tant que MINOR, et le filtre l'a laissé passer — exactement le bump que l'épingle prétendait empêcher.La leçon est réutilisable, et elle vaut plus que le correctif : une entrée
ignorene vaut que le schéma de versionnage du paquet. « Ignorer les majeures » ne protège de rien sur un projet qui ne bumpe jamais sa majeure. Le crédit va à la review po-2024 sur #945 ; j'ai vérifié contre le delta de paquets de la PR avant de corriger.→ Playwright passe en ALL update types, comme QuestPDF.
2. OWLSharp 4→5 casse le build — et c'est le « merit test » que j'avais différé
#942/#943 laissait OWLSharp délibérément non épinglé : « Apache-2.0, aucun risque licence, un major à tester sur ses mérites après le tag ». #945 a fait le test.
10 erreurs de compilation, toutes dans
Ontology/OwlAdapter.cs(run30212821456) :SKOSHelper(using OWLSharp.Extensions.SKOS) a changé ses signatures en 5.0.0. Les cinq points de contact sont enveloppés detry/catchavec fallback par scan d'annotations — mais cescatchgardent l'exécution, pas la compilation : le build n'atteint jamais les 638 tests.→ Épinglé en
semver-major, et la migration est ouverte comme #946 avec son DoD (régénérer l'OWL et retrouver 1 408 concepts / 59,9 % crosslinks / 5,07 Mo ; conserver les fallbacks ; retirer l'ignoredans la même PR). L'épingle est le corollaire du travail planifié, pas un moyen d'éteindre un build rouge — la barre d'admission en tête du fichier reste respectée : la décision est citée, et elle est datée d'aujourd'hui.3. Deux choses délibérément non modifiées
dotNetRdfreste non épinglé. La review de po-2024 attribuait le blocage àdotNetRdf 3.3.2 → 3.5.2. Re-mesuré : c'est faux.dotNetRdffournitVDS.RDF(parsing, utilisé ailleurs dans le même fichier), son bump est un minor, etRDFSharp.RDFResourceest le type que notre code passe, pas celui qui a bougé. L'épingler aurait été un sur-épinglage acheté sur une mauvaise attribution.SkiaSharpgardesemver-majorseulement. #945 a livré 2.88.6 → 2.88.9, un patch dans la ligne 2.88.x contre laquelle QuestPDF 2022.12.12 se lie. C'est l'épingle qui fonctionne, pas une fuite. Un commentaire le dit dans le fichier, pour que personne ne « corrige » ce cas par analogie avec Playwright : les deux diffèrent par le versionnage du paquet, pas par notre intention.4. Les labels
nuget/npm/vendoredn'existaient pasCe fichier les référence depuis #910 ; ils n'existaient pas dans le dépôt. Dependabot postait donc « The following labels could not be found » sur chacune des 27 PR ouvertes. Les trois labels sont créés ; noté dans l'en-tête pour qu'on ne les supprime pas sans éditer la config.
Vérifications
yaml.safe_load: 29 blocsupdatespréservés (aucun bloc npm touché)ignorenuget résultante : AutoMapper (majeures) · QuestPDF (ALL) · SkiaSharp (majeures) · Playwright (ALL) · OWLSharp (majeures) · OWLSharp.Extensions (majeures)dependabot-2.0: validDisposition de #945
Ne pas merger : build rouge, et la cause est #946. Laissée ouverte — dependabot régénérera le groupe sans OWLSharp ni Playwright au prochain passage, et le tout-venant sain (Newtonsoft 13.0.4, PdfPig 0.1.15, CsvHelper 33, Spectre 0.57, xunit 2.9.3…) redeviendra mergeable une fois le major hors du lot.
Refs #942, #945, #946
🤖 Coordinator ai-01