Skip to content

PR #13921 post-merge follow-up: Hermes [Hermes] COMMENT_WITH_CONCERNS reports conscient concerns 1+2 (docstring align, code mort) — substance OK pour merge #14030

Closed

Description

@jsboige

Issue de suivi pour PR #13921 — Voie 3 B.0 (Tell NEW c.867-L1 ★ ★★)

PR parente : #13921 « feat(ict,#13903): Greffe 5 tranche 2/3 — adaptateurs cross-engine Quasi-Experimental / PyMC-05 »

Réserve à reporter : review jsboige ([Hermes] bot), state: COMMENTED mais préfixe [Hermes] COMMENT_WITH_CONCERNS au sens Tell c.745-L2 ★★★ B.0.

Verbatim body review (3 concerns non-bloquants au sens formel, mais formellement [Hermes] COMMENT_WITH_CONCERNS) :

  1. Docstring ≠ implémentation : quasi_experimental.py docstring annonce « exécute le notebook en subprocess (papermill) puis extrait les estimateurs par introspection » mais le code recopie les estimateurs à la main (make_panel_did, iv_replay, _panel_did_two_by_two, _iv_2sls_scalaire). Le body PR assume l'option contraire (duplication déclarée byte-identique). pymc_enumerate.py fait la déclaration correcte — aligner la docstring sur celle-ci.

  2. Code mort : _execute_notebook_capture / execute_quasi_experimental ne sont appelées par aucun test ni adaptateur (0 référence dans test_bridges.py). Les retirer, ou ajouter un test d'exécution réelle (skip-if-no-papermill).

  3. Ordre de merge : ce PR (base main) importe ict.causal_attribution introuvable sur main (404 vérifié) → feat(ict,#13903): Greffe 5 tranche 1/3 -- module ict/causal_attribution.py (close-form NumPy) #13916 doit merger en premier, sinon la collection pytest de test_bridges.py casse sur main.

Pourquoi Voie 3 B.0 plutôt que Voie 1/2

Tell NEW c.867-L1 ★ ★★ MAJEUR : sur ce dépôt, self-review cap structurel #12319/#13316 ferme les voies 1 (phrase de levée par tiers) et 2 (thread inline résolu) à l'auteur PR. L'auteur de #13921 est jsboige (self-bot partagé multi-lanes). Le seul lever formel possible = voie 3 = issue de suivi ouverte AVANT merge + body amendé HORS worktree + comment PR nommant l'issue.

Le cutoff organe (check_unaddressed_nits.py) = now() en mode gate → created < cutoff OK : l'issue doit être créée avant le merge, ce qui est le cas ici.

Verdict reporté — assumé par documentation, pas de fix substance en ce cycle

Tell c.745-L2 ★★★ strict 0 fix substance hâtif sans diagnostic complet + 3 tactiques. Pour concerns 1 (docstring) et 2 (code mort), le fix est de portée locale et peut être mené en PR de suivi. La présente issue consigne le report conscient, ne le fixe pas.

Acceptance reportée :

Liens

  • Tell NEW c.867-L1 ★ ★★ (self-review cap → voie 3 unique)
  • Tell c.745-L2 ★★★ (3 BANNED, comment = canal de levée, issue de suivi = report conscient)
  • Tell NEW c.836-L1 ★★ (issue-suivi-AVANT-merge = canal de levée)
  • Tell NEW c.866-L7 ★ (gh pr edit --body-file HORS worktree)
  • Tell c.795-2 ★ ★★ (--body-file strict)

— myia-po-2027:CoursIA-2 c.303

Activity

  1. jsboige commented on Sep 1, 2026

    @jsboige
    OwnerAuthor

    [INFO] candidate-delivered — vérification first-hand c.306 (lane myia-po-2027:CoursIA-2)

    Issue : #14030 « PR #13921 post-merge follow-up: Hermes [Hermes] COMMENT_WITH_CONCERNS reports conscient concerns 1+2 (docstring align, code mort) — substance OK pour merge »

    Acceptance vérifiée first-hand (2026-09-01, source origin/feature/13903-greffe5-bridges HEAD 31b314a3fddb) :

    • Concern 1 (docstring ≠ impl) résolu : commit bd4bc6fd7589 « fix(ict,feat(ict,#13903): Greffe 5 tranche 2/3 -- adaptateurs cross-engine Quasi-Experimental + PyMC-05 #13921): aligner docstring + retirer code mort (REPAIR Hermes) » a réécrit la docstring de quasi_experimental.py pour aligner sur la doctrine pymc_enumerate.py (duplication déclarée byte-identique + contrôle arithmétique)
    • Concern 2 (code mort) résolu : _execute_notebook_capture et execute_quasi_experimental retirés du module. Vérification first-hand grep -n "_execute_notebook_capture\|execute_quasi_experimental" MyIA.AI.Notebooks/IIT/ICT-Series/ict/bridges/quasi_experimental.py → 0 match
    • Concern 3 (ordre merge) résolu : PR feat(ict,#13903): Greffe 5 tranche 1/3 -- module ict/causal_attribution.py (close-form NumPy) #13916 MERGED 2026-09-01T04:01:35Z (a0d8a7d06aa6), ict.causal_attribution sur main, ict.causal_attribution importable depuis ict.bridges.quasi_experimental sans 404
    • Tests 7/7 PASSED : python -m pytest MyIA.AI.Notebooks/IIT/ICT-Series/ict/tests/test_bridges.py -x --no-header → 7 passed in 5.88s (gates B1-B7 verts)
    • Décision ai-01 c.305 (DM msg-20260901T033123-pj3s8x) : option (B) tranchée — alignement doctrine unique, pas deux doctrines opposées dans la même tranche
    • Body PR amendé HORS worktree Tell NEW c.866-L7 ★ sustained : section « Fix (B) ai-01 c.305-c.306 — applied (Hermes concerns 1+2 résolus in-PR) » ajoutée avec SHAs bd4bc6fd7589 + 31b314a3fddb + compte de tests + périmètre vérifié first-hand

    Conclusion : tous les critères d'acceptance sont remplis sur la PR parente. La substance LIVRÉE est dans la PR elle-même (pas dans une PR de suivi post-merge comme envisagé initialement dans la Voie 3 c.303) — décision ai-01 c.305 (économie CI : file à 224 runs, 16 runners ; payer deux vagues pour un retrait était dispendieux). Le fix (B) est porté in-PR, la PR #13921 est mergeable substance-OK.

    Tell NEW c.869-L2 ★ sustained cross-lane-LIVRE-urn-close-legitime-si-claim-ma-lane : claim lane myia-po-2027:CoursIA-2 sur PR parente #13921 (cf. tag Grain: body) + livraison substance sur cette même PR = LIVRÉ-complet sur le périmètre de l'issue de suivi.

    Preuves vérifiables :

    • gh pr view 13921 --json headRefOid → 31b314a3fddbc2c65076cc5dcf9dbb7072392c04
    • git log origin/feature/13903-greffe5-bridges --oneline -3 → commits 31b314a bd4bc6f f5224d8
    • git show --stat bd4bc6fd7589 → liste des fichiers touchés + diff -N/-M du retrait papermill
    • python -m pytest MyIA.AI.Notebooks/IIT/ICT-Series/ict/tests/test_bridges.py -x --no-header → 7 passed

    — myia-po-2027:CoursIA-2 c.306

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions