Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .GCC/branches/plan_readme_maj.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Execution Plan: Mise à Jour des README & Nouveaux Diagrammes Excalidraw (Architecture v1.0)

## 📋 Target Invariant & Pre-requisites
- **Target Invariant**: Préservation stricte de l'isomorphisme bilingue ligne à ligne (`wc -l README.md` == `wc -l README.fr.md`), 0 emoji Unicode dans les en-têtes (utilisation exclusive des émojis animés Microsoft Fluent 3D), palette Émeraude (`#10B981` / `#34D399` / `#0D1117`), couverture exhaustive des nouveautés architecturales (`maj.md`, `note-de-conception-fondements-et-architecture.md`, Phase 1 AT-SPI Rust, chemins dynamiques XDG, nouveaux outils et scripts d'installation/désinstallation dédiés par OS), et validation complète de `./ci.sh` (112/112 tests PASS, Ruff, Mypy).
- **Pre-requisites**: Branche `docs/readme-how-it-works-update`, outils `gh`, `browser` subagent, suites de tests locales.

## 🛠️ Step-by-Step Sequence

### Step 1: Création de la Branche et Enregistrement du Plan dans GCC
- [x] **Action**: Création de la branche `docs/readme-how-it-works-update`, rédaction de `.GCC/branches/plan_readme_maj.md` et référencement dans `.GCC/main.md`.
- [x] **Verify**: `git status && test -f .GCC/branches/plan_readme_maj.md`
- **Verification Proof**:
```text
Sur la branche docs/readme-how-it-works-update
Fichier plan_readme_maj.md créé.
```

### Step 2: Conception & Génération des Nouveaux Diagrammes Excalidraw (EN & FR)
- [x] **Action**: Génération des diagrammes vectoriels SVG d'architecture reflétant les 2 Piliers (Escalade Progressive L3 AT-SPI Rust -> L2 RapidOCR -> L1 uinput/MSS, Moteur REPL Local CodeAct `execute_script`), la couche PTY, l'enregistrement vidéo continu et l'arborescence multi-plateforme (`linux/`, `windows/`, `macos/`).
- [x] **Verify**: Validation de l'arborescence SVG, hébergement/accès et inspection visuelle.
- **Verification Proof**:
```text
how-it-works-en.excalidraw & how-it-works-fr.excalidraw générés.
Rendu sur excalidraw.com et extraction SVG/PNG :
- assets/exc-how-it-works-en.svg (44 200 octets)
- assets/exc-how-it-works-fr.svg (45 225 octets)
Publication sur GitHub Gist Public :
- EN: https://gist.githubusercontent.com/personnal-agent/f0b933b981a70de123282eb99fd6df44/raw/exc-how-it-works-en.svg
- FR: https://gist.githubusercontent.com/personnal-agent/f0b933b981a70de123282eb99fd6df44/raw/exc-how-it-works-fr.svg
Inspection visuelle multimodale validée (palette Émeraude, Virgil font, rough sketches).
```

### Step 3: Rédaction et Mise à Jour de `README.md` (Version Anglaise)
- [x] **Action**: Intégration dans `README.md` des nouvelles sections d'architecture : Arborescence racine étanche (`linux/`, `windows/`, `macos/`), résolution dynamique des chemins XDG (`paths.py`), médiation d'accessibilité AT-SPI2 / D-Bus en Rust (`gui-agent-atspi`), les 2 Piliers conceptuels (Escalade Progressive L3/L2/L1 & Moteur REPL CodeAct), nouveaux scripts d'installation/désinstallation (`linux/install.sh`, `linux/uninstall.sh`, `windows/install.ps1`, `windows/uninstall.ps1`), mise à jour de la table des outils (accessibilité, vidéo préservée) et nouveau diagramme Excalidraw.
- [x] **Verify**: `wc -l README.md` et vérification syntaxique
- **Verification Proof**:
```text
README.md mis à jour : 485 lignes, 0 emoji Unicode dans les en-têtes (#/##/###/####), aucune mention de "Nouvelle version/maj", image SVG Gist configurée.
```

### Step 4: Rédaction et Synchronisation Isomorphe de `README.fr.md` (Version Française)
- [x] **Action**: Traduction technique soignée dans `README.fr.md` avec préservation stricte de la structure ligne par ligne en miroir parfait avec `README.md`.
- [x] **Verify**: `diff <(wc -l README.md | awk '{print $1}') <(wc -l README.fr.md | awk '{print $1}')`
- **Verification Proof**:
```text
File 1 (README.md): 485 lines
File 2 (README.fr.md): 485 lines
PERFECT MATCH on line count!
PERFECT MATCH on empty line structure!
```

### Step 5: Validation CI et Zero-Slop
- [x] **Action**: Exécution complète de `./ci.sh` et vérification des workflows GitHub Actions.
- [x] **Verify**: `./ci.sh`
- **Verification Proof**:
```text
| Étape de Validation | Statut | Durée |
|--------------------------------------------|------------|------------|
| Compilation Bytecode Python (compileall) | PASS | 560ms |
| Validation Workflows GitHub Actions | PASS | 83ms |
| Linter de Code (Ruff Check) | PASS | 19ms |
| Formatage de Code (Ruff Format) | PASS | 23ms |
| Typage Statique Strict (Mypy) | PASS | 955ms |
| Suite de Tests Pytest | PASS | 44572ms |
============================= 112 passed in 41.60s =============================
🎉 Toutes les étapes CI sont validées avec succès !
```

## ⚠️ Mitigations & Edge Cases
- **Risk**: Divergence du nombre de lignes entre l'anglais et le français due aux longueurs de phrases.
- **Mitigation**: Ajustement minutieux des retours à la ligne et des paragraphes pour assurer `wc -l README.md == wc -l README.fr.md`.
- **Risk**: Liens d'images brisés ou indisponibilité CDN.
- **Mitigation**: Utilisation d'hébergement SVG fiable (GitHub Gist public) avec fallback local si nécessaire.
27 changes: 27 additions & 0 deletions .GCC/branches/test.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,30 @@ La campagne d'exécution atteste d'une qualification à **100% PASS** des 21 out
| **Validation Globale CI (Phase 1 durcie)** | `./ci.sh` | 100% des étapes CI vertes (compileall, verify_workflows, ruff check, ruff format, mypy, pytest) | 112/112 tests passés en 54.98s, 0 avertissement, 0 erreur | **PASS** |
| **Rejet index u32 hors plage & tests MCP** | `cargo test --manifest-path linux/crates/atspi_mediator/Cargo.toml` | Rejet immédiat sur index numérique > u32::MAX + priorité identifiant explicite | 13/13 tests passés (9 lib, 4 main), 0 avertissement | **PASS** |

---

## 🎨 Mise à Jour des README & Nouveaux Diagrammes Excalidraw (Architecture v1.0) (2026-09-13)

| Cible / Scénario | Commande de Test | Résultat Attendu | Résultat Constaté | Statut |
|---|---|---|---|---|
| **Conception Excalidraw vectorielle** | Génération `how-it-works-en.excalidraw` & `how-it-works-fr.excalidraw` | Diagrammes conformes au schéma officiel Excalidraw reflétant les 2 Piliers (Escalade L3/L2/L1, REPL CodeAct) | Fichiers JSON Excalidraw valides créés | **PASS** |
| **Rendu Canvas et Export SVG/PNG** | Automatisation navigateur Chromium sur `excalidraw.com` | Rendu fidèle, police Virgil manuscrite, palette Émeraude | SVG et PNG haute fidélité générés dans `assets/` | **PASS** |
| **Inspection visuelle multimodale** | `view_file` sur images PNG générées | Conformité avec la référence `media_1789334163981.png` | Structure visuelle validée (niveaux L3/L2/L1, REPL, hôte) | **PASS** |
| **Hébergement Gist public** | `gh gist create` | Liens SVG publics pérennes sans polluer le dépôt Git | Gist `f0b933b981a70de123282eb99fd6df44` créé et accessible | **PASS** |
| **Isomorphisme bilingue strict** | `diff <(wc -l README.md \| awk '{print $1}') <(wc -l README.fr.md \| awk '{print $1}')` | Exacte égalité de lignes et de structure vide | 485 lignes dans les deux fichiers, parité parfaite | **PASS** |
| **Zéro emoji Unicode dans en-têtes** | Script Python de scan de tous les titres `#`, `##`, `###`, `####` | Aucun emoji Unicode (uniquement CDN Fluent 3D `<img>`) | 0 emoji Unicode détecté | **PASS** |
| **Absence de mentions d'historique** | Script Python de scan de termes bannis ("nouvelle version", "nouvelle maj", etc.) | Reflet pur de l'état actuel de l'architecture | 0 occurrence de mention d'historique | **PASS** |
| **Validation Globale CI** | `./ci.sh` | 100% des étapes CI vertes (compileall, verify_workflows, ruff check, ruff format, mypy, pytest) | 112/112 tests passés en 41.60s, 0 avertissement, 0 erreur | **PASS** |

### 🛡️ Traitement Exhaustif des Retours Greptile sur PR #138 (2026-09-13)

| Constat Greptile | Fichiers / Lignes | Correctif Appliqué | Vérification | Statut |
|---|---|---|---|---|
| **P1 - Fonctionnalités annoncées indisponibles** | `README.md:80-81`, `README.fr.md:80-81` | Piliers 1 & 2 précisés avec rigueur : L3 AT-SPI2 Rust actif, L2 RapidOCR/Tesseract actif, L1 screenshots actif avec uinput/evdev en feuille de route, REPL execute_script en Phase 2 | Lecture textuelle et conformité avec les 21 outils actuels | **PASS** |
| **P1 - Backends multiplateformes absents** | `README.md:91-92`, `README.fr.md:91-92` | Qualification explicite de `windows/` et `macos/` comme répertoires avec backends natifs en cours de développement / réservés | Absence d'ambiguïté sur la disponibilité immédiate | **PASS** |
| **P2 - Installation non reproductible** | `README.md:108,119,407,418`, `README.fr.md:108,119,407,418` | Restauration du tag immuable `v0.1.0` pour toutes les commandes curl/PowerShell d'installation et de désinstallation | Alignement parfait avec `INSTALL.md` | **PASS** |
| **P2 - Prérequis Cargo manquant** | `README.md:146,150,154,448`, `README.fr.md:146,150,154,448`, `hatch_build.py:128-132` | Ajout de `cargo` et `rustc` dans les prérequis Linux, mention `(requires Cargo)` lors du pip install éditable, et avertissement explicite dans `hatch_build.py` si cargo est absent sous Linux | Script Python et build hook testés | **PASS** |
| **P2 - Séparateurs de tableaux en trop** | `README.md:389,469`, `README.fr.md:389,469` | Réduction des séparateurs de 4 colonnes à 3 colonnes pour alignement strict avec les en-têtes et données | `check_tables` Python : 100% propre (3 cols) | **PASS** |
| **P1 - Tagged scripts unavailable** | `README.md:108,119,407,418`, `README.fr.md:108,119,407,418`, `INSTALL.md:15,119,134` | Substitution de `v0.1.0` (qui ne contenait pas `linux/` et `windows/`) par le commit SHA immuable de release `7a49514` contenant l'arborescence multi-plateforme | Toutes les requêtes HTTP testées retournent 200 OK | **PASS** |


15 changes: 9 additions & 6 deletions .GCC/main.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
- [2026-08-27] Bornage Déterministe et Deadline Globale pour le Listing X11 (PR #55, Confidence Score 5/5 Greptile)
- [2026-09-12] Modular Architecture Scaffolding, Execution Primitives Hardening & Dependencies Modernization (PR #136, Confidence Score 5/5 Greptile, 0 findings CodeRabbit, 65/65 tests)
- [2026-09-13] Médiation d'Accessibilité Programmatique AT-SPI & Durcissement Purge Uninstall (PR #137, Confidence Score 5/5 Greptile, 12/12 fils CodeRabbit résolus, 112/112 tests)
- [2026-09-13] Documentation Architecture v1.0, Nouveaux Diagrammes Excalidraw Gist & Harmonisation Immuable (PR #138, Confidence Score 5/5 Greptile, 112/112 tests)

## 🎯 Objective
High-performance FastMCP server engineered with a decoupled modular architecture (core, layers, utils) for direct, low-latency Computer Use on Linux (X11/XWayland) and Windows desktop environments (<50 MB RAM, 21 tools, zero-leak process lifecycle).
Expand Down Expand Up @@ -127,8 +128,8 @@ High-performance FastMCP server engineered with a decoupled modular architecture
- **Rationale**: Geler la structure jusqu'à la revue utilisateur afin de ne pas invalider les chemins de son audit, et reporter les corrections futures dans l'audit.

## 🌿 Active Branches / Plans
- `feat/accessibility-mediation-phase-1` : Médiation d'accessibilité programmatique via AT-SPI / D-Bus (Issue #130) [plan_accessibility_phase_1.md](.GCC/branches/plan_accessibility_phase_1.md) - Pull Request [#137](https://github.com/leandre755/gui_agent/pull/137) soumise par `personnal-agent`
- `main` : Production release with decoupled modular architecture (core, layers, utils), bilingual landing pages, 65/65 Zero-Slop test harness, hardened screenshot rollback lifecycle, bounded X11 timeouts and thread-safe video recording.
- `docs/readme-how-it-works-update` : Mise à jour des README (EN & FR) et génération des nouveaux diagrammes d'architecture Excalidraw (Architecture v1.0) [plan_readme_maj.md](.GCC/branches/plan_readme_maj.md) (Validé 5/5 Greptile sur PR #138).
- `main` : Production release with multi-platform decoupled architecture (`linux/`, `windows/`, `macos/`), native Rust AT-SPI mediator, dynamic XDG path resolution, bilingual landing pages, 112/112 Zero-Slop test harness, and thread-safe video recording.

## 📈 Current Status
- ✅ Done:
Expand All @@ -145,15 +146,17 @@ High-performance FastMCP server engineered with a decoupled modular architecture
- Alignement du workspace Cargo racine (`Cargo.toml`) sur `linux/crates/atspi_mediator` validé par `cargo check`.
- Décision d'architecture actée : Bundle Unique Natif par OS en Rust (avec REPL PyO3 embarqué) directement exécutable et compilable sur l'hôte.
- Validation CI 112/112 tests PASS, Mypy strict (36 fichiers), Bandit, Semgrep et quality gate pre-commit PASS sur la branche `feat/accessibility-mediation-phase-1`.
- Application intégrale et exhaustive des retours de revue Greptile et CodeRabbit : transmission directe d'identifiant résolu et priorité dans le médiateur MCP Rust, parsing universel de l'adresse de bus AT-SPI (formats bruts/cités busctl et dbus-send), prise en charge sécurisée des répertoires de captures personnalisés (`GUI_AGENT_SCREENSHOTS_DIR`) avec protection stricte des racines système/utilisateurs, vérification de propriété UID, restriction chirurgicale aux motifs applicatifs authentiques (timestamps numériques et UUID stricts), et préservation à 100% des fichiers médias tiers plausibles (`video_projet.mp4`, `recording_interview.mp4`, `screenshot_final.png`).
- Validation et certification officielle de la Pull Request [#137](https://github.com/leandre755/gui_agent/pull/137) : **Confidence Score: 5/5 sur Greptile**, **0 commentaire ajouté**, verdict *Safe to merge; there are no outstanding blocking issues*, et **12/12 fils CodeRabbit résolus** sur GitHub.
- Application intégrale et exhaustive des retours de revue Greptile et CodeRabbit sur PR #137 : Confidence Score 5/5, 12/12 fils résolus, fusionné dans `main` (commit `7a49514`).
- Validation CI complète : 112/112 tests PASS, Mypy strict (36 fichiers), Bandit, Semgrep, Rust clippy/test/fmt et quality gate pre-commit PASS.
- 🔄 In progress: Approbation et fusion de la Pull Request #137 par le mainteneur.
- Conception et génération des nouveaux diagrammes vectoriels Excalidraw (`how-it-works-en.excalidraw`, `how-it-works-fr.excalidraw`, SVG/PNG dans `assets/`, hébergement GitHub Gist public `f0b933b981a70de123282eb99fd6df44`).
- Refonte intégrale et isomorphe de `README.md` et `README.fr.md` (485 lignes strictes, 0 emoji Unicode dans les en-têtes, 0 mention d'historique de version, intégration des 2 Piliers, de la médiation Rust AT-SPI2, des chemins dynamiques XDG et de la préservation vidéo).
- Publication et qualification de la Pull Request [#138](https://github.com/leandre755/gui_agent/pull/138) : résolution de 100% des constats Greptile (P1 capacités, P1 multi-plateforme, P2 reproductibilité, P2 Cargo, P2 séparateurs tables, P1 scripts taggués), obtention du **Confidence Score 5/5** et **0 finding**.
- 🔄 In progress: Finalisation / Fusion de la PR #138.
- ⏳ Pending:
- 2. **Phase 2 (#131)** : Moteur d'exécution local CodeAct et SDK unifié `mcp_core` (`core/repl.py`).
- 3. **Phase 3 (#132)** : Émulation d'entrées noyau (`uinput/evdev`), perception visuelle (`RapidOCR`) et gestion de fenêtrage (`process_run` sécurisé).
- 4. **Phase 4 (#133)** : Déclaration FastMCP des 13 outils chirurgicaux, suppression des redondances et mise à jour CI.
- 5. **Recherche OS tiers (#134, #135)** : Adaptation Windows (UI Automation) et macOS (NSAccessibility).

## 👉 Next Session Direction
Finaliser la Pull Request pour la Phase 1 (Issue #130 : Médiation d'accessibilité programmatique via AT-SPI / D-Bus) puis initier la Phase 2 (Issue #131).
Fusionner la PR #138 (`docs/readme-how-it-works-update`) dans `main` après confirmation utilisateur, puis initier la Phase 2 (Issue #131 : Moteur REPL CodeAct).
Loading
Loading