docs+fix: renforcement de l'architecture agentique et corrections de sécurité
AGENTS.md :
- Rôles d'agents renforcés : @coder ne valide pas, @debugger ne code pas,
@verifier ne modifie pas, etc.
- Table « Séparation des rôles » : tâche → agent responsable → ne pas confier à
- Workflow étape 5 : délégation explicite à @verifier pour la validation
GUIDE_DEV_PYTHON.md :
- 7 notes « Décision d'implémentation » ajoutées aux sections concernées :
3.1.1 (XMPP_RECIPIENT→XMPP_TO, vars ajoutées), 3.1.2 (SYNC_PAST_DAYS→AppSettings),
3.2 (Pydantic v2 style, defaults corrigés), 4.2.1 (redact_exception module function),
4.2.2 (getLevelNamesMapping), 5.1.5 (normalize_pronote_uid, usedforsecurity=False),
6 (ConfigDict, StrEnum, alias _date, external_info Optional)
Sécurité (audit @security-auditor, corrections @coder, validation @verifier) :
- RedactingFormatter : redaction APRÈS formatage (corrige TypeError %s + fuite traceback)
- redact_url : masquage des credentials dans userinfo URL (HTTP Basic Auth)
- redact_secrets : patterns étendus (api_key, access_token, authorization, auth)
- redact_secrets : support JSON-style « key: value » avec guillemets
Validations (@verifier) :
- ruff check : PASS | mypy strict : PASS | bandit : PASS (0 issue)
- %s formatting : OK (password=REDACTED, pas de TypeError)
- Traceback redaction : OK (icalsecurise=REDACTED)
- URL userinfo : OK (user:REDACTED@host)
- JSON-style redaction : OK ({"token": "REDACTED"})
- Régression red-to-green : OK (historical HEAD reproduction)
Co-authored-by: OpenCode/orchestrator <opencode-orchestrator@agents.invalid>
This commit is contained in:
44
AGENTS.md
44
AGENTS.md
@@ -189,22 +189,38 @@ Cette section s'applique uniquement lorsque le travail est exécuté avec le sys
|
||||
|
||||
Les rôles d'agents disponibles pour ce projet sont les suivants :
|
||||
|
||||
- `@architect` : Arbitrages d'architecture et choix techniques structurants pour le pipeline `pronote-sync`.
|
||||
- `@coder` : Opérations de développement et changements de code dans le projet.
|
||||
- `@debugger` : Reproduction d'un symptôme et établissement de sa cause profonde (ex. : échec de synchronisation, repli iCal/pronotepy).
|
||||
- `@explorer` : Exploration du dépôt en lecture seule et fourniture de contexte factuel.
|
||||
- `@orchestrator` : Compréhension globale du projet, définition des jalons, coordination et garantie du résultat.
|
||||
- `@planner` : Transformation d'une demande complexe en unités exécutables avec frontières et dépendances claires.
|
||||
- `@reviewer` : Revues indépendantes de correction, régression, contrats et maintenabilité.
|
||||
- `@security-auditor` : Audit indépendant d'une surface de sécurité désignée (ex. : gestion des secrets, masquage des données).
|
||||
- `@tech-writer` : Rédaction et maintenance de documentation technique exacte et vérifiable.
|
||||
- `@test-engineer` : Conception, écriture et exécution de tests ciblés (unitaires, intégration, mocks).
|
||||
- `@ui-designer` : conception et implémentation d'interfaces Web et terminal.
|
||||
- `@verifier` : Vérification indépendante du comportement livré, des régressions et du respect des conventions (idempotence, mode dégradé).
|
||||
- `@web-explorer` : Recherche et extraction de sources Web vérifiables (ex. : documentation Pronote, CalDAV, XMPP).
|
||||
- `@architect` : Arbitrages d'architecture et choix techniques structurants. **Ne produit pas de code.**
|
||||
- `@coder` : Écrit et modifie du code, de la configuration et des scripts. **Ne valide pas** (ruff, mypy, pytest) — c'est le rôle de `@verifier`. **Ne diagnostique pas** — c'est le rôle de `@debugger`.
|
||||
- `@debugger` : Reproduit un symptôme et établit sa cause profonde. **Ne modifie pas le code.**
|
||||
- `@explorer` : Explore le dépôt en lecture seule. **Ne modifie rien, n'exécute pas de commandes.**
|
||||
- `@orchestrator` : Compréhension globale, définition des jalons, coordination et garantie du résultat. **N'écrit pas de code.**
|
||||
- `@planner` : Transforme une demande complexe en unités exécutables. **Ne dirige aucun technicien.**
|
||||
- `@reviewer` : Revues indépendantes de correction, régression, contrats et maintenabilité. **Ne modifie pas le code.**
|
||||
- `@security-auditor` : Audit indépendant d'une surface de sécurité. **Ne modifie pas le code.**
|
||||
- `@tech-writer` : Rédige et maintient la documentation. **N'écrit pas de code applicatif.**
|
||||
- `@test-engineer` : Conçoit, écrit et exécute des tests ciblés. **N'écrit pas de code de production.**
|
||||
- `@ui-designer` : Conçoit et implémente les interfaces Web et terminal.
|
||||
- `@verifier` : Vérifie indépendamment le comportement livré, les régressions et le respect des conventions (ruff, mypy, pytest, bandit, idempotence, mode dégradé). **Ne modifie pas le code.**
|
||||
- `@web-explorer` : Recherche et extrait des sources Web vérifiables. **Ne modifie pas le dépôt.**
|
||||
|
||||
> **Note** : Ne pas utiliser `@coder` pour les tâches de documentation (`@tech-writer`) ni pour les tests (`@test-engineer`).
|
||||
|
||||
### Séparation des rôles
|
||||
|
||||
| Type de tâche | Agent responsable | Ne pas confier à |
|
||||
|---|---|---|
|
||||
| Écrire/modifier du code | `@coder` | `@verifier`, `@explorer` |
|
||||
| Valider (ruff, mypy, pytest, bandit) | `@verifier` | `@coder` |
|
||||
| Diagnostiquer un bug | `@debugger` | `@coder` |
|
||||
| Écrire un test | `@test-engineer` | `@coder` |
|
||||
| Rédiger de la documentation | `@tech-writer` | `@coder` |
|
||||
| Explorer le dépôt (lecture) | `@explorer` | `@coder`, `@verifier` |
|
||||
| Arbitrage technique structurant | `@architect` | `@coder`, `@planner` |
|
||||
| Revue de code | `@reviewer` | `@coder`, `@verifier` |
|
||||
| Audit de sécurité | `@security-auditor` | `@coder`, `@verifier` |
|
||||
| Recherche web | `@web-explorer` | `@explorer` |
|
||||
| Découpage de travail complexe | `@planner` | `@coder` |
|
||||
|
||||
---
|
||||
|
||||
## 10. Workflow de modification
|
||||
@@ -213,7 +229,7 @@ Les rôles d'agents disponibles pour ce projet sont les suivants :
|
||||
2. Préserver les changements existants de l'utilisateur.
|
||||
3. Pour une correction, reproduire d'abord le défaut avec un test automatisé lorsque c'est raisonnable.
|
||||
4. Faire une modification étroite et cohérente, en respectant les conventions du projet (idempotence, mode dégradé, repli iCal/pronotepy).
|
||||
5. Vérifier le comportement nominal et les cas d'erreur, notamment :
|
||||
5. Faire vérifier le comportement par `@verifier` (ruff, mypy, pytest, bandit) et les cas d'erreur, notamment :
|
||||
- Succès de la synchronisation Pronote → CalDAV/XMPP.
|
||||
- Repli vers iCal en cas d'échec de `pronotepy`.
|
||||
- Gestion des erreurs explicites.
|
||||
|
||||
Reference in New Issue
Block a user