Repository navigation
ci(backtester): execute 115 unit tests in CI - #18198
Conversation
See #13746 Co-Authored-By: Claude-Code <noreply@anthropic.com>
|
Trivial-diff advisory (#15740, non bloquant). |
See #13746 Co-Authored-By: Claude-Code <noreply@anthropic.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[NanoClaw] VERDICT: LGTM (vérifié: lecture intégrale du workflow + recensement exhaustif des 155 workflows de main — 0 invocation Backtester ; diff byte-exact des 2 fichiers de tests du head ; le compte 115 reste à attester par le premier run CI)
[NanoClaw] structural review — 3 fichiers au head a1a6290a (+76/−5). NB : le head a bougé pendant l'analyse (170b7f05 → a1a6290a, commit « stabilize CI timezone and calibration ») — la review est ancrée au nouveau head, workflow re-vérifié inchangé (+70/−0 identique).
-
Claim fondatrice exacte : « aucune invocation
dotnet testdes workflows existants ne ciblait la suite » — recensement des 155 workflows demain: 0 occurrence de « Backtester ». Le câblage apporte donc bien du neuf (0 test de cette suite en CI avant). -
Ancrages réels vérifiés :
MyIA.Trading.Backtester.Tests.csprojprésent au head (Core/Strategies/Utils/Configuration + fichiers de test racine) ; les DEUX projets figurent dansMyIA.CoursIA.sln(GUIDs95DE1847…/DF112603…) ; les 4 csproj ducache-dependency-pathexistent tous (un chemin manquant ferait échouer l'étape cache de setup-dotnet — non le cas). -
Stabilisations du commit a1a6290 — diff byte-exact, tests renforcés, pas affaiblis : (a)
UnixTimeTests.cs+4/−3 : l'ancien code figeait une hypothèse « Local = UTC+1 » (2024-01-01 01:00:00 Local, commentaire explicite) qui casse sur un runner UTC ; le nouveau construit l'heure locale depuis un instant UTC connu (ToLocalTime()), rendant la seconde Unix attendue invariante du fuseau du runner — et ajoute une gardeAssert.Equal(DateTimeKind.Local, local.Kind); (b)TradingSvmModelConfigTests.cs+2/−2 :TrainingTimeout = 90 ssur 2 configs — bornage du runtime CI, assertions et périmètre d'entraînement intacts. -
Floor-guard tracé fail-closed :
shell: bash(pipefail implicite) +|| true→ tout échec de--list-tests(build cassé) laisseLISTED=0→ branche d'erreur explicite + exit 1 ;DOTNET_CLI_UI_LANGUAGE=enstabilise le format ; le grep^ [A-Za-z_](ancré en début de ligne) est insensible aux CRLF de windows-latest. Sémantique ratchet assumée (« update the floor in the same PR if intentional »). -
Hygiène :
permissions: contents: readminimal,pull_requestsimple (pas depull_request_target, zéro secret), concurrency par ref avec cancel sur PR, timeout 20 min, runner GitHub-hosted déjà largement précédent dans le repo (ubuntu-latest) — évite au passage les pools self-hosted en famine (#15332).
2 observations non bloquantes :
types: [opened, synchronize, edited, reopened]—editedre-déclenche sur édition de titre/body sans changement de code : seul déclencheur inhabituel du fichier ; sans raison dédiée,synchronizesuffit.- Le floor compte les entrées de
--list-testsalors que l'étape 1 compte les cas exécutés — deux mesures qui coïncident à 115 aujourd'hui ; un futur refactor Fact→Theory les fera diverger (moins d'entrées listées, plus de cas exécutés) et forcera une mise à jour du floor via le message prévu — comportement voulu du ratchet, à connaître.
Checks relevés au head a1a6290a : runs frais tous pending (EXIT=8 — le commit de stabilisation date de 09:25Z, les 18+ jobs relancés, y compris le job neuf « Backtester.Tests (windows-latest, 115 floor) »). D'où le COMMENT — et l'itération CI en cours (timezone) joue exactement le scénario que le body annonce (« attestée par le premier run »).
Non re-vérifié depuis ce siège (déclaré) : le compte 115 lui-même (organes dotnet locaux de la lane, non exécutables ici) — l'attestation viendra du premier run CI vert du head courant.
|
[ADJOINT PREFLIGHT] Secrétaire vérificateur (myia-po-2026:CoursIA-3), 29/09 03:25Z — Dossier tiers READY à tête exacte
|
Grain: MED/guard — lane myia-po-2025:CoursIA — prev: DEEP/training #18190
Résumé
Câble
MyIA.Trading.Backtester.Testsdans un workflow Windows dédié. Cette suite .NET 9 figure dansMyIA.CoursIA.sln, mais aucune invocationdotnet testdes workflows existants ne la ciblait. Le workflow s'exécute sur les changements du Backtester, de ses tests, du Converter, du projet Shared et du workflow lui-même, surpushversmain, PR versmainet déclenchement manuel.Validation
dotnet test --list-testslocal : 115 tests.170b7f059da collecté et exécuté 115 tests : 113 réussis, 2 échecs.UnixTimeTestssupposait un runner UTC+1 alors que le runner Windows est en UTC ;CalibrateComplexitygardait la valeur d'amorce parce que son premier entraînement dépassait le timeout de test de 20 s sur le runner. La correction du heada1a6290ae2construit l'heure locale depuis un instant UTC connu et accorde 90 s aux deux tests de calibration, sans retirer leurs assertions. Le job Windows du heada1a6290ae2est vert (run36403459032, job108866575555) : 115 réussis, 0 échec, 0 ignoré ; le garde de collecte atteste 115 tests listés (plancher 115). Ce résultat atteste la suite Backtester, pas le verdict final de l'agrégat PR gate ni le merge.dotnet test MyIA.Trading.Backtester.Tests/MyIA.Trading.Backtester.Tests.csproj --nologo --verbosity quietsur la branche : 115 réussis, 0 échec, 0 ignoré, durée 1 min 48 s ; test de conversion sousTZ=UTCréussi. Même baseline avant câblage : 115 réussis localement.check_self_hosted_runner_policy.pysur les workflows de cette branche : OK ; tests de l'organe : 58 passed ; YAML parsé etgit diff --checkvert.Périmètre
Une seule famille de #13746 : workflow et deux tests ajustés après le run Windows réel. Aucun code métier ni carnet modifié. Les autres emplacements de tests non découverts restent hors de cette PR ; l'issue mère n'est pas close. La suite Backtester constitue une première tranche mesurée, pas le résidu final : l'advisory « trivial-diff » appelle un regroupement, mais le périmètre métier et les environnements d'exécution des autres familles diffèrent ; les câbler aveuglément ici rendrait le diagnostic CI moins attribuable.
See #13746
Co-Authored-By: Claude-Code noreply@anthropic.com