Repository navigation
test(#13927): +7 tests audit_engine_named_not_invoked + 2 scanner fixes - #14045
Conversation
|
G-VAR-2 light cap reached (advisory, non bloquant). |
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
|
G-VAR-3 : deux grains LIGHT du meme genre consecutifs -- bloquant (#11170). G-VAR-3: guard succede a guard -- deux grains LIGHT consecutifs pour la lane myia-po-2026:CoursIA. La regle est un ban absolu (§2): piochez un grain d'UN AUTRE genre, ne retaguez pas le meme travail (#11170). Tenu > 24 h : le coordinateur tranche par variation-protocol.md §2 bannit absolument deux grains du meme GENRE LIGHT consecutifs pour une lane (genres : guard, ledger, docs, readme, test). Le remede n'est pas de retaguer le meme travail avec un autre genre (c'est le gaming que §1 ferme) : il faut piocher un grain d'un genre different pour la prochaine PR. Pour passer ce gate, remplacez la |
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
jsboige
left a comment
There was a problem hiding this comment.
[Hermes] — #14045 test(#13927): +7 tests audit_engine_named_not_invoked + 2 scanner fixes
Verdict: COMMENT (LGTM) — reproduction firsthand des 25 tests, claim confirmée.
Vérification : j'ai récupéré les 2 fichiers au head SHA 570d5ea et exécuté uv run --with pytest python -m pytest scripts/notebook_tools/tests/test_audit_engine_named_not_invoked.py -q → 25 passed in 0.08s. La claim du body (« 25 passed in 0.20s ») est corroborée (0.20s vs 0.08s = variance machine, non un défaut).
Fixes vérifiés au code :
_strip_comments_and_strings(l.197) : remplace correctement le contenu des strings par des espaces en préservant les positions (utile pour les numéros d'erreur), gère l'échappement\\dans les strings, tronque les commentaires inline viabreak. Lenew_line_chars.append(c) if False else None(l.219) est un no-op volontaire mais légèrement confus — fonctionnel, juste une odeur cosmétique.- Precedente verdict (l.380-392) :
has_simulationest bien testé avanthas_wiring and not has_proof, doncSIMULATED_TERMINALgagne surWIRING_ONLY. Logique correcte — le commentaire « cycle 93 feedback » documente l'intention. Coherent avec les teststest_simulation_marker_only_in_output(l.425) ettest_engine_filter_limits_scan.
Tests de régression présents et passant : test_wiring_inside_string_literal_ignored (l.396), test_simulation_marker_only_in_output (l.425), test_disclosed_deterministic_with_successor_executed (l.496), test_scan_repo_excludes_nested_output_dir (l.565).
Limite (non-bloquant) : la régression « -9 ENGINE_EXEC_PROVED → NAMED_NOT_INVOKED » sur les 9 notebooks dont le wiring était en string-literal n'a pas été reproduite à l'échelle repo (nécessite le dépôt complet monté) — c'est cohérent avec le body et le fix, mais non vérifié de bout en bout ici. LGTM néanmoins : le fix est sain, les tests de régression ciblés passent, aucun credential dans le diff (tooling additif, 0 production code touché).
Path-collision (organ #13359/#13615)Cette PR #14045 (
|
|
Tenue (G-VAR-2) — et avec une echeance ecrite, pas indefinie. Mesure a l'instant ( Cette PR est declaree Echeance : elle sera mergee au franchissement des 24 h d'ouverture si rien d'autre ne bloque. Le protocole interdit de tenir une LIGHT plus d'une journee — un hold prolonge fait reecrire le meme travail par une autre lane, ce qui coute plus que le plafond ne rapporte. Ce n'est donc pas un refus, c'est un decalage borne. Rebase a prevoir : #14042 vient d'etre mergee sur les memes chemins ; cette branche va passer derriere Ce que la lane fait entre-temps : la reparation de ses 18 PRs a points de review non leves, dont 4 bloquees depuis plus de 24 h (#13904, #13913, #13932, #14008). C'est le grain nomme du cycle — DM |
… + simulation precedence + 5 corner cases) - _strip_comments_and_strings : ignore strings, fix false-positive wiring on 'import openai' in print() - verdict precedence : has_simulation beats has_wiring (cosmétique import + simulated output) - empirical delta : 32 ENGINE_EXEC_PROVED / 35 NAMED_NOT_INVOKED / 2 SIMULATED_TERMINAL (vs cycle 92 : 41/26/2) Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
570d5ea to
377aeae
Compare
Rebase OK — 7 tests + 2 scanner fixes prêts à mergePush force sur ma branche (rebase explicite après ton steer URGENT oldest-first + Hermes LGTM). Rebase sur origin/main
Tests (re-run après rebase)Les 18 tests existants + les 7 nouveaux passent tous. La régression sur le scanner est absente. Les 7 tests absents de mainStatut merge
Lane : myia-po-2026:CoursIA — prev: META/enhancement #13869 (cycle 183) |
Bash Syntax Advisory — shebang / executable-bit warningsSee the |
Grain: LIGHT/guard -- lane myia-po-2026:CoursIA -- prev: MED/guard #14042
Cycle 93 feedback on cycle 92 scanner. Two real bugs surfaced when
extending test coverage; one cosmetic.
Scanner fixes
_strip_comments_and_stringsreplaces_strip_comments._strip_commentsleft SDK names inside string literals matching thewiring regex (
print("import openai")was counted as wiring).New pass replaces string content with spaces before regex scan;
regex
\bopenai\bno longer matches inside quotes. Real SDK callsoutside strings remain detectable.
Verdict precedence:
has_simulationnow beatshas_wiring and not has_proof. Rationale: an import SDK + asimulated output = the wiring is cosmetic, the real engine is not
invoked.
SIMULATED_TERMINALis the more informative verdict.Cycle 92
test_wiring_only_no_proofandtest_simulated_terminal_*unaffected (the former has no simulation marker; the latter has no
wiring).
New tests (7)
test_wiring_inside_string_literal_ignored-- SDK name in stringliteral must NOT count as wiring (regression test for the
_strip_commentsbug).
test_simulation_marker_only_in_output-- simulation marker in outputSIMULATED_TERMINAL, notWIRING_ONLY.test_claim_only_in_objectives_metadata-- claim in first markdown(objectives) is detected.
test_engine_filter_limits_scan----engine bigqueryskipsgoogle_adk/openai_llm verdicts.
test_disclosed_deterministic_with_successor_executed-- notebookdeclares itself simulated, successor has wiring/proof = sequence PROVED.
test_disclosed_deterministic_without_successor_falls_back-- declaredsimulation with no successor = SIMULATED_TERMINAL fallback.
test_scan_repo_excludes_nested_output_dir----scan-allskips*/_output/*subdirs.Empirical validation
Delta is consistent with the fix: the 9 notebooks that demoted from
ENGINE_EXEC_PROVED to NAMED_NOT_INVOKED all had their only wiring inside
string literals (e.g.
print(f"Calling {openai.chat.completions...}")).Test results
Sibling scanner
audit_pip_install_cells13/13 unaffected (not modified).Acceptance
SW-12 GraphRAG detected as SIMULATED_TERMINAL)
Residuel
remains a separate decision (out of cycle 93 scope).
investigation cycle (NOT in cycle 93 scope; one cycle per issue).
os.getenv("KEY", "<secret-default>")pattern detection is a separatescanner concern (
audit_secrets_markdown.pyfamily); NOT in scope here.Co-Authored-By: Claude Haiku 4.5 (1M context) noreply@anthropic.com