Repository navigation
Story 32-6a : le point d'entrée /mcp et sa garde (refs #723) - #760
Merged
Merged
Conversation
…2-6b (journal) (refs #723) Fiche 32-6-endpoint-mcp.md (35 AC, 11 tâches, 36 mutations, inventaire clos des chemins vers un outil), registre epic-32-choix-autonomes-326.md (C-32-6-1 à 30), prompt de validation P1 (Sonnet, lentilles R et F). sprint-status : 32-6-endpoint-mcp à split ; 32-6a et 32-6b ready-for-dev, développement après 32-5b, 32-5d, 32-5c. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sonnet x2, R 0/0/3/14 et F 0/0/8/8 : ConnectInfo par Result, détecteur du registre des routes étendu à fallback(, comparaisons octet pour octet, corps jamais lu avant les contrôles, sous-routeur à état propre EtatMcp, gardes ContexteAcces::mcp et AppError, Donnees en politique.rs, statuts du registre en 32-6a et 32-6b. Registre C-32-6-31 à 34 ; prompt de validation P2 (Opus, R et F). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Opus x2, R 0/0/4/12 et F 0/0/5/11, recyclage déclaré (sept MEDIUM nés de la remédiation P1). Conception simplifiée : liste blanche des erreurs de service, sortie unique reponse::rendre, politique::autoriser avant l'exécution, EtatMcp sans AppState, extraction de tout fallback(, after_release qui ferme chaque connexion du pool du MCP. Registre C-32-6-35 à 37 et annotations datées ; prompt de validation P3 (Sonnet). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sonnet x2, R 0/0/4/9 et F 0/0/3/4, recyclage déclaré (les sept MEDIUM nés d'une remédiation). Règle commune des gardes lexicales : propriété, périmètre et formes, motif mesuré sur le dépôt à l'étape 0, témoins rouge et vert. Points d'accès du registre renommés, couche de capture générique avec témoin, rendre asynchrone avec RouteAbsente(Request), Ma17 visée sur authentifier, EtatMcp sans Config, garde sur la Lecture ordinaire avant tout emprunt du pool des outils. Registre C-32-6-38 et 39 ; prompt de validation P4 (Opus). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Opus x2, F 0/1/4/7 et R 0/0/1/12. HIGH F1, vérifié au code d'Axum 0.8.9 : /mcp monté par route_service (Endpoint::Route appelé not_top_level, comme le repli) au lieu d'un MethodRouter qui ajoutait Allow et content-length ; autre_methode et l'extension du détecteur à fallback( retirées. Type LectureOutils pour la lecture des outils, témoin serveur de la capture, notification complète, id null, CORS absent à dessein. Registre C-32-6-40 et 41 ; prompt de validation P5 (Sonnet). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sonnet x2, R 0/0/1/12 et F 0/0/1/6, deux MEDIUM nés de la P4. AC-b6 et AC-a31 suivent le montage par route_service ; Ma20b écrite sous ses deux formes compilables (post_service, any_service), et toute la matrice du test d'indiscernabilité passe par oneshot, hyper posant lui-même content-length: 0 sur le fil. LOW d'une ligne traités, le reste à l'étape 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Passe ciblée Opus, 0/0/1/8. H1 : la règle « une entrée invalide de trusted_proxies écarte la société de S » est gardée et propagée (C-32-6-6 annoté, Ma13 bornée, Ma13b et test n prime, liste de la 32-7, journal en error!). LOW H2 à H9 traités, dont la demande mal formée au répartiteur (AC-a19) et la Config des tests d'intégration nommée. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
P7 ciblée Sonnet 0/0/0/4 : les quatre LOW vont à l'étape 0 du développement avec leur correction attendue. Change Log complet, 32-6a et 32-6b ready-for-dev, développement après 32-5d et 32-5c. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ool des outils en lecture seule ; T-a0, test d'indiscernabilité vert (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion, outils, gardes lexicales et leurs tests (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ie (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…H1 à H4, clé à review, prompt de revue P1 (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…outils, ordre de l'enveloppe prouvé, 401 fixe à l'étape 9, en-têtes répétés refusés, gardes élargies (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… choix C-32-6-52 à 55, C-32-6-42 accepté (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…i garde ses connexions, garde de max_statement_time, fiche annotée (refs #723) - H1 : repartiteur::appeler lance l'outil dans un tokio::spawn qui possède l'outil (Arc<dyn McpTool>), le contexte d'accès et la lecture des outils ; le handler n'attend que la tâche, sous le délai. Un abandon (délai ou déconnexion) ne rend plus le permis avant la fin de l'instruction (C-32-6-56). Tests abandon_au_delai_le_permis_reste_pris et abandon_par_deconnexion_le_permis_reste_pris ; mutation P2-Mq1. - Doc de pool_lecture_seule et § « Ce que les gardes ne voient pas » : la borne se compte depuis le début de l'instruction (texte faux corrigé). - H2 : AC-a10 et ordre des contrôles annotés (étape 9 → 401, C-32-6-52). - H3 : max_statement_time dans la garde lecture_seule_jamais_defaite (C-32-6-57) ; mutations P2-Mq2, P2-Mq3. - H4, H5, H6, H7, H9 : angles morts et faux positif écrits, preuve reformulée, doc de kesh_version, emprunt hors de la fenêtre du test (g). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, gates au commit de remédiation (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ne (refs #723) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Story 32-6a : le point d'entrée
/mcpet sa garde (refs #723)POST /mcp, JSON-RPC 2025-11-25 sans session, liste close des méthodes ; registre d'outils (McpTool, portée sans défaut) etkesh_version./mcpest indiscernable d'une route absente (route_service).X-Forwarded-Fordes seuls mandataires déclarés ; contrôle d'Origin(403 en amont, 401 fixe quand la société de la clé ne l'admet pas).max_statement_timeposé à chaque connexion, connexion fermée à sa restitution ; l'outil s'exécute dans une tâche qui garde permis et connexion jusqu'à la fin de l'instruction (C-32-6-56).requiredrefusée avant exécution jusqu'à la 32-8 ; gardes lexicales (lecture seule jamais défaite, pas de pool hors du MCP).Fiche : 7 passes de validation. Revue de code : 3 passes — P1 Sonnet ×3 0/0/2/16 → P2 Opus ciblée 0/0/2/7 → P3 Sonnet ciblée 0/0/0/1.
Gates au dernier commit de code (
dd4b8398) :test-fast.sh --ci4183/4183 (7 ignorés), frontend 1939/1939, build vert, E2E complet 315 passés + 7 échecs = KF-029. La fusion demainqui suit ne porte que de la documentation.Tracé : #759 (tâche abandonnée qui va au bout, attentes de permis non bornées, marges de temps des tests d'abandon).
🤖 Generated with Claude Code