Skip to content

P2.2 — Memo Steward : entretien continu des dépôts #19

Open

Description

@guillaume-flambard

TODO

  • Détecter sans suppression les branches/PR périmées et les configurations divergentes.
  • Détecter flakiness de tests, régressions de docs, dépendances/Actions obsolètes.
  • Produire un rapport priorisé et des PR correctives via Automation uniquement après revue du diff.
  • Ne pas automatiser les changements de secrets, permissions ou protections d'organisation.
  • Créer un pilote sur un dépôt public et mesurer faux positifs.

Acceptation : Rapport utile et PR correctrice réversible sans accès d'administration.

Voir aussi : docs/automation-architecture.md et docs/migration-matrix.md.

Activity

  1. guillaume-flambard commented on Oct 13, 2026

    @guillaume-flambard
    ContributorAuthor

    Memo Steward v0 exécuté : scripts/steward.py --days 14 (lecture seule de 9 dépôts), 0 candidate inactive lors du passage du 13/10/2026. Le script est publié dans .github au commit d4c972a, et la CI statique est verte : https://github.com/memolabs-dev/.github/actions/runs/38388207620. Restent ouverts : tests anti-faux positifs, détection de branches obsolètes, maintenance PR, notifications et intégration Lab.

  2. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Audit CI / PR du 26 octobre 2026 (preuves observées, sans déclarer de correction) :

    P0 CI main Navirox rouge au commit 812f28dd, run https://github.com/memolabs-dev/navirox/actions/runs/39432370677

    • install / build / typecheck / test : succès, comme les jobs de compilation et les parcours Android/iOS autonomes.
    • capture the records fixture on an emulator : échec après deux tentatives ; spawnSync /usr/bin/google-chrome ETIMEDOUT lors de la vérification des identifiants DOM.
    • capture the records fixture on a simulator : échec après deux tentatives ; spawnSync /Applications/Google Chrome.app/Contents/MacOS/Google Chrome ETIMEDOUT au démarrage ou à la vérification DOM du scénario field-workflow.
    • Code concerné : packages/visual-benchmark/src/drivers.ts (runWebProcess, checkWebIdentifiers, captureWebChrome) et .github/workflows/ci.yml. Exigence : garder les vraies captures natives et web, ne pas rendre ces checks facultatifs pour obtenir du vert.

    P1 PR dépendances : 11 PR Dependabot Navirox, dont #37 uniquement @types/node dans devDependencies+lockfile. Son check pnpm changeset status --since échoue faute de changeset ; correctif attendu : changeset vide si aucune API publiée ne change, test et revue du SHA exact. Les PR #33 et #32 sont anciennes ; regrouper/fermer seulement après comparaison des versions.

    P1 blocage de travail local : le checkout canonique Navirox présente 9 modifications/délétion non commitées sur main (changeset et fichiers de release). Plusieurs worktrees Codex existent. Ne pas réinitialiser, stasher ni voler le travail en cours ; isoler tout correctif éventuel sur sa branche/worktree approprié.

    Signal portfolio (inventaire 26/10) : 66 PR ouvertes dans le périmètre (54 organisation, 12 personnelles dont 11 privées) ; la grande majorité des derniers runs de main des projets vitrine vérifiés est verte. Prioriser Navirox P0, les PR bots, puis les PR agents vieillies avant réorganisation des épingles. Voir aussi memolabs-dev/freelance-growth#68.

    Suivant : isoler une correction déterministe du timeout Chrome, tests unitaires du driver, puis vérifier sur une exécution GitHub Actions contenant les deux jobs de capture réels. Ne pas annoncer le P0 réparé avant cette preuve.

  3. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Bilan de revue PR et validation après fusion — 26 octobre 2026

    Mutations effectivement confirmées :

    Gates de validation en cours / blocages :

    Inventaire mouvant : début d'intervention 94 PR ouvertes (81 org, 13 user) ; dernière lecture 87 ouvertes (75 org, 12 user), d'autres sessions ouvrent des PR simultanément. Les dix sorties ci-dessus viennent de cette intervention ; le solde net dépend d'autres sessions.

    Prudence : préserver les checks et protections. Pas de nouvelle fusion sur un dépôt tant que sa validation post-merge est bloquée ; ne pas forcer les locks ni utiliser --admin.

  4. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Audit chronologique GitHub — 26 octobre 2026 (suite)

    Décisions exécutées lors de cette passe, oldest-first :

    Correctif technique réalisé : memolabs-dev/navirox#50

    • Sur worktree isolé, commit b7fc1b4 (Chrome en headless sans options parasites, garde captures + contrôle d'identifiants DOM) et 89b074f (changeset patch pour @memolabs-apps/visual-benchmark).
    • Hook local complet 66/66 tâches vertes, lint/format/syncpack ; changeset status vérifié. Poussé sur GitHub.
    • Première CI PR a signalé changeset manquant ; correction faite et poussée. Dernière CI du SHA 89b074f encore en cours ; ne pas fusionner avant réussite des captures réelles Android et macOS. Sans ces preuves, main Navirox reste non confirmé réparé.

    Dépendances Drop :

    • #124 (deux Cargo.lock, tous checks verts) soumise à merge queue ; encore ouverte lors du contrôle.
    • #125 (Node Docker proof, nouveau HEAD f020fde99, Windows/macOS/test verts) soumise à merge queue ; encore ouverte.
    • #126 a été fusionnée par la merge queue (confirmé à 09:31 UTC).
    • Pas de --admin, aucun merge forcé.

    État observé à la dernière lecture : 54 PR ouvertes org + 8 perso = 62 PR ; chiffres évolutifs, car autres sessions continuent de créer des PR. Les GitHub Actions de plusieurs repos (emargo, Lab Console, CRA Clock) sont bloquées par l'annotation GitHub The job was not started because recent account payments have failed or your spending limit needs to be increased. Impossible de prétendre à une CI entièrement verte tant que le paiement/limite de dépenses n'est pas réglé.

    Étape future, seulement APRES décision documentée pour chaque PR : audit des branches distantes/locales avec dernière activité, PR liée, comparaison par commit main, worktrees actifs, branche protégée, preuves de merge/cherry-pick et contrôle d'orphelins ; suppression uniquement des branches prouvées intégrées, jamais des branches qui portent le seul exemplaire de fonctionnalités ni d'une branche active.

    Prochaines décisions à prendre dans la file oldest-first : Navirox #32/#33 et les PR hold-merge, puis dépendances du 17–19 octobre ; traiter la CI et la facturation avant de nouvelles fusions significatives.

  5. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Passage de maintenance du 26 octobre — PR anciennes, CI et règle de création des PR

    Mutations effectuées et vérifiées

    Dernier inventaire constaté : 46 PR org + 6 personnelles = 52 PR ouvertes, toujours mobile car d'autres sessions travaillent. Les vieux dossiers hold-merge (Kollio #24–27, Memo Bridge #132, Cuesheet #79, World Kernel #2) sont conservés pour revue ciblée, sans forçage. Ne pas commencer la suppression massive des branches avant d'avoir classé chaque PR et vérifié quels commits restent uniques sur les branches. Préserver les PR protégées, les conditions de revue humaine et les tests réels.

  6. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Revue chronologique PR et sécurité — 26 octobre 2026, suite

    Décisions exécutées et branches conservées

    Kollio anciens hold-merge (aucun retrait d'étiquette)

    Inventaire : dernier relevé 45 PR ouvertes org + 8 perso = 53 (autres sessions créent des PR). Pas de branches supprimées. Poursuivre traitement par date + correctifs CI et sécurité avant le nettoyage de branches, uniquement après preuve de non-perte des commits.

  7. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Oldest-first PR cleanup follow-up (26 Oct): Updated Kollio #27 on current main at exact head 5346fe6a... while preserving hold-merge, new native-spatial job has passed Xcode project parity, actual macOS target build, Swift package build/tests and native close/reopen; two-finger scroll and selected-card E2E still running. Navirox P0 #52: created #62 (initial commit 4e8b8ec, followup 8184071) with pnpm-scoped React Native DevTools Chromium opt-out for BOTH records and Angular companion Metro launchers and Detox subprocesses; kept real Android/iOS capture gates and sandbox. Local full 110/110 turbo tasks, 142/142 visual benchmark tests, 66/66 hook green; exact-head hosted CI currently running, no merge. Security #47 handlebars CRITICAL and #55 shell-quote CRITICAL stay open and unfixed on main until actual green CI + merges. Memo Bridge #248/#249 are both stale and in conflict, functionality missing from main; leave open rather than closing and losing unique inventory/MCP changes. No branch deletions.

  8. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Suivi chronologique — 26 octobre, nouvelle passe (~13:10 Paris)

    Nouveau correctif réel : memolabs-dev/navirox#63, head 09792e127cad : les preuves Chrome utilisent maintenant un seul navigateur pour générer le PNG et vérifier les vrais identifiants DOM sur le même rendu, au lieu de deux processus par état. Preuve manuelle sur Chrome macOS avec --dump-dom --screenshot : PNG et DOM existants. Build visual-benchmark OK, 142/142 tests de module, hook 66/66, eslint/prettier/syncpack OK, changeset inclus. CI GitHub Android toujours en cours (sur ce SHA, capture réelle), ne PAS merger tant que E2E natif non validé, ne pas retirer le sandbox ni les checks. Détails techniques consignés dans navirox #52.

    Revue anciennes PR (19 oct.) : https://github.com/memolabs-dev/jp-petit-website/pull/2 fermée sans merge ni suppression de branche : .mergify.yml sur HEAD et main a exactement le même blob Git e7a4d40bf633b085b0e358c29f71e11d2a44cc51. Fonctionnalité déjà intégrée, zéro diff matériel. Quatre autres PR similaires (acadomia-calendrier #2, trufflo #2, vulnforge #4, emargo #52) sont encore utiles : main a toujours la condition obsolète #check-pending = 0. Elles modifient .mergify.yml (politique d'auto-merge), donc exigent une vraie revue des chemins protégés ; ne pas les fusionner pour réduire artificiellement la file. Acadomia a de surcroît un check Label sensitive paths en échec.

    Kollio old #27 : nouveau head 5cdc2d5faa7 avec native-spatial SUCCESS et contrôle des chemins sensibles vert ; commentaire de revue memolabs-dev/kollio-mac#27 (comment) . hold-merge et needs-human-review respectés, PR de workflow protégée. Garder #24/#25 pour revue native/chaîne spatiale.

    Inventaire le plus récent : 58 PR org, 8 personnelles = 66 PR ouvertes, dynamique pendant que d'autres agents créent des PR. Le solde net peut donc augmenter malgré les vraies fermetures. Aucune branche supprimée.

  9. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Poursuite chronologique — 26 octobre 2026 (Navirox P0 et Portfolio)

    Navirox #63 effectivement fusionnée par Mergify, 2026-10-26T12:19:25Z, commit 62bf3ffb23e73a9a5921c77248314944d8ec1b8f (PR head 09792e127cade862e23b0ced9583ef052fb0a8a8). Le job de capture Android du PR head est SUCCESS, ainsi que CodeQL, build, parcours Vue. Le correctif exécute Chrome une seule fois pour PNG + DOM, sans --no-sandbox ni suppression de preuve; 142 tests de module et 66 tâches de hooks locaux précédemment validés.

    Ancienne PR JP Petit Website #2 fermée sans fusion ni suppression de branche, parce que son unique .mergify.yml avait le SHA de blob strictement identique à main. Les équivalents acadomia-calendrier #2, trufflo #2, vulnforge #4 et emargo #52 ne sont PAS des doublons (leurs main ont encore l'ancienne config Mergify) ; tous portent déjà needs-human-review, donc ne pas forcer.

    Memo Bridge Portfolio :

    • PR #248 (20 oct., DIRTY/conflit) : code non entièrement sur main. Travail de reprise terminé dans un worktree isolé, avec pagination portfolioPages de main conservée, 4 lectures concurrentes par défaut et cap 8, script CLI read-only, tests de caps, sécurité de pagination et troncature.
    • Nouvelle PR #309, head b42616e05ef692441a0a6d124734ca7894b961a4, feat(portfolio): bounded live Issues/PR inventory with safe pagination memo-bridge#309. Preuves : node --test --test-concurrency=2 --test-timeout=180000 tests/*.test.mjs 1199 tests, 1196 passés, 3 ignorés, 0 échec avant les 3 tests supplémentaires; suite ciblée finale 15/15 ; pnpm run build et smoke standalone SUCCESS. Node 22 et Node 24 CI GitHub SUCCESS. Mergify Merge Queue en cours à la dernière vérification, PR pas encore fusionnée.
    • Ancienne #248 fermée, avec commentaire et branche conservée ; pas déclarée livrée avant #309 fusionnée.
    • #249 toujours ouverte et en conflit, ajouter hold-merge pour CI Node 22/24 historiques rouges, outil portfolio_overview absent de main et incompatible à requalifier avec catalogue MCP courant après #309. Commentaire de cadrage ajouté, aucun contournement.

    Dernier inventaire : ~65 PR ouvertes (58 org + 8 perso avant la fermeture #248, avec #309 créé), variable à cause des autres agents. Aucun nettoyage destructif de branches. Continuer oldest-first et attendre CI exact-head, sans contourner hold-merge / needs-human-review.

  10. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Compte rendu 26 octobre — maintenance GitHub, actions vérifiées :

    1. Navirox fix(lease): read the owner's home from the account, not $HOME #63 MERGED par Mergify à 12:19 UTC (merge commit 62bf3ffb23e73a9a5921c77248314944d8ec1b8f). Le correctif screenshot+DOM dans un seul processus Chrome conserve toutes les preuves. Tests du module 142/142 et hook 66/66. Le post-merge main a un job Android capture SUCCESS, mais des jobs iOS CANCELLED : ne pas le déclarer entièrement vert.

    2. Navirox P1 — STAR write-boundary: atomic local fenced broker with process-race proof #47 MERGED à 12:38 UTC sur le head 5ba8e2e42d298128ee99683b37b77693852fbe75. Handlebars 4.7.10. Les alertes critiques GitHub #170 et #172 sont désormais FIXED (2026-10-26T12:38:34Z). Critiques restantes : #162 shell-quote (couvert par feat(star): lease status exposes the public owner fields for recovery #55, CI en cours) et #195 next ^13.0.0 dans une fixture next-bad privée, uniquement lue dans les tests. Ne pas modifier ni dismiss silencieusement la fixture sans validation métier.

    3. Navirox feat(landing): one verified-merge contract for every repository #51, commit f4a309e : correction du job Android pour erreur libpulse.so.0 manquant et retries Angular en TargetNotEmptyError (logs https://github.com/memolabs-dev/navirox/actions/runs/40321903445/job/121568670081). Installation conditionnelle Ubuntu libpulse0, un workspace unique par tentative, vrais artefacts toujours uploadés. YAML, structure, Prettier, hook 66/66 verts. CI nouveau SHA en cours. needs-human-review préservé, pas de merge de .github sans revue. Suivi dans P0: stabilize real native capture CI without disabling Chromium sandbox navirox#52 (comment). chore(uni): register merged STAR sources with the governance verifier #53 a sa capture Android rouge ; feat(star): lease status exposes the public owner fields for recovery #55 attend ses captures.

    4. Memo Bridge #309 MERGED par Mergify à 12:37:49 UTC. Ancienne #248 en conflit remplacée/fermée, branches non supprimées. Nouvelle version préserve pagination GitHub actuelle, CLI lecture seule et concurrency 4 cap 8. Suite 1199 tests (1196 pass, 3 skipped, 0 failed), ciblés 15/15 après dernière modification, build et smoke OK, CI Node 22/24 SUCCESS et main vert. Memo Bridge #249 non équivalente : conflit, CI Node rouge, portfolio_overview absent de main ; label hold-merge ajouté et travail préservé.

    5. JP Petit Website P0 — Register Memo Guardian and verify independent Checks identity #2 CLOSED après comparaison du blob .mergify.yml identique sur HEAD et main. Les quatre PR similaires d'autres repos ont encore un changement réel et needs-human-review.

    Aucune suppression destructrice de branches, aucun --admin, aucune désactivation de tests. Dernier compteur connu avant les dernières fusions : 57 org + 9 perso = 66 ; ne pas considérer comme compteur actualisé. Le traitement oldest-first se poursuit avec les protections maintenues.

  11. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Passage de maintenance du 26 octobre, nouvel état vérifié :

  12. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Maintenance GitHub — 26 octobre 2026, passage suivant (chronologie conservée)

    Action technique réalisée : ouverture de Navirox #66, head a6cbbdf2e54, une modification ciblée du retry de capture Angular Android dans .github/workflows/ci.yml. Incident réel sur #55 : Detox a produit un PNG, puis le nettoyage adb reverse --remove tcp:36045 a échoué car le listener était absent ; la seconde tentative réutilisait le même dossier et échouait aussitôt avec TargetNotEmptyError. La PR crée un workspace -attempt-1 et -attempt-2 différent, copie UNIQUEMENT les artefacts d'une tentative réussie vers le chemin upload d'origine. YAML validé (7 jobs), extraction du step validée par bash -n, test shell de contrôle d'un 1er essai raté + 2e réussi et copie stable OK ; commit hooks passés. needs-human-review présent ; CI Android réelle encore in progress. Ce correctif porte sur le mécanisme de retry et non sur la cause du teardown ADB, qui reste à diagnostiquer. Incident mis à jour dans Navirox #52.

    Revue chronologique et sûreté :

    • Vulnforge #3, outils d'avis OSV / fin de support : contrôle indépendant en checkout isolé du HEAD 28351d0e3f1a0476daa7141dcaf363966efa9374, uv run --locked pytest -q = 25/25 tests réussis, worktree propre ; aucun véritable appel fournisseur. Ce HEAD n'a que le check GitHub Label sensitive paths, pas de CI pytest. hold-merge ajouté et preuve commentée ici. Demande de CI et revue sécurité ; rien fusionné.
    • lab-infra #261 : catalogue de secrets, CLI Keychain, courtier deny-by-default et workflow nouveau. Checks GitGuardian/Ansible/Python/Swift verts mais nouveau périmètre de secrets et fichiers protégés : ajout hold-merge + needs-human-review ; revue argumentée, aucun secret lu.
    • lab-infra #265 : runner CI Memo Orbit sur VPS, toujours en conflit Git. hold-merge + needs-human-review, pas de contournement ni déploiement.
    • memolabs-dev/.github #64 : draft de synchronisation GitHub Projects V2 avec jeton dédié et cron. Vérification main : script et workflow absents, travail encore unique et utile ; hold-merge + needs-human-review, pas d'activation ni fermeture abusive.

    Statut dernier contrôle : Navirox #55 toujours rouge sur la capture Angular, l'alerte CRITICAL shell-quote #162 n'est pas encore corrigée sur main. #51 reste needs-human-review, #53 capture Android en cours, #66 captures Android en cours. Le dernier job iOS de main Navirox 40324068108 est encore en cours : CI main globale non déclarée entièrement verte. Les deux anciennes alertes Handlebars critiques #170/#172 restent fixed. Nouveau scanner de dépendances fait aussi apparaître une CRITICAL Next dans la fixture explicitement next-bad (#195) ; ne pas confondre ce corpus volontairement vulnérable avec un composant runtime sans revue du contexte.

    Compteur dynamique : 60 PR org + 10 personnelles = 70 PR ouvertes au dernier relevé (autres agents créant de nouvelles PR). Aucune branche supprimée, aucune PR de .github ni .mergify fusionnée sans revue humaine, aucun bypass de checks, aucun merge admin.

  13. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Revue GitHub 26 octobre 2026 — nouvelle passe après ~16h45 Paris (chantiers poursuivis par Memo Bridge)

    Fusions vérifiées (pas simplement proposées)

    • chore(deps): bump body-parser from 1.20.8 to 1.20.9 navirox#64 (body-parser 1.20.8 -> 1.20.9, lockfile transitive seulement) : contrôle exact du HEAD 30f6520f, vrais checks verts build/typecheck/test, capture Android, parcours Vue, CodeQL, pas de label hold ou modification .github ; squash via merge queue GitHub, état MERGED confirmé, commit 3bf0c52c10c5 à 15:52:19Z. L'alerte HIGH Dependabot #202 est désormais fixed (15:52:39Z).
    • deps: bump happy-dom from 21.0.3 to 21.0.4 drop#134 (happy-dom 21.0.3 -> 21.0.4, manifests + lockfile) : revue du diff et checks test, Windows, macOS, build SUCCESS ; entrée GitHub merge queue vérifiée GraphQL puis état MERGED confirmé à 15:59:55Z.

    Entrées dans la merge queue, NON encore déclarées fusionnées

    Fermeture de doublon réel

    Protection suite à revue

    • chore(deps): bump ts-jest from 29.4.14 to 29.4.15 navirox#61 : nouvel HEAD 1f11c56e55 ; le bump ts-jest 29.4.14 -> 29.4.15 rétrograde accidentellement typescript-eslint 8.72.0 de main vers 8.71.2 dans pnpm-lock.yaml. Confirmation par lecture réelle des lockfiles du main et du HEAD. hold-merge ajouté avec explication (commentaire 6420797377) ; demander reconstruction de lockfile depuis main, sans downgrade, et nouveaux tests exact SHA. Pas de suppression de travail.

    Compteur vivant : dernier relevé 52 PR org + 10 personnelles = 62 ouvertes (autres sessions créent, fusionnent ou ferment simultanément). Ne pas assimiler baisse du compteur à toutes les actions de cette seule passe. Aucune branche supprimée, aucun --admin, pas de changement de politique Mergify, pas de fusion workflow protégé sans humain.

  14. guillaume-flambard commented on Oct 26, 2026

    @guillaume-flambard
    ContributorAuthor

    Maintenance GitHub — 26 octobre 2026, nouvelle passe (~17h Paris, compteur dynamique)

    Fusions vérifiées :

    PR entrées dans la merge queue GitHub après contrôle HEAD et CI, encore OPEN au dernier relevé :

    Protection documentée :

    Sécurité P0 Navirox :

    Compte rendu final de cette passe : 51 PR ouvertes org et 10 personnelles = 61. Inventaire mouvant. 1 merge Drop #132 confirmé, 3 entrées en merge queue, 3 PR sécurisées par label et commentaire; aucune branche supprimée, aucun --admin, aucune dérogation de contrôle.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions