feat(mcp): enumerate_choices + apply_selections (remplissage de choix par lot)#4
Merged
Conversation
… par lot) Implemente le LLD docs/design/LLD-batch-choice-enumeration-selection.md. - enumerate_choices: enumere toute une surface de choix scrollable en une passe (groupes single/multi-select, requis/optionnel, id+coords) ; read-only par defaut, scroll_scan optionnel - apply_selections: applique tous les picks en UN lot sous UNE seule approbation ; garde epoch a 2 niveaux (expected_epoch au dispatch + fingerprint en vol -> re-scan uniquement sur reflow) ; resolution fail-closed par id (fallback label/group/bbox) ; verif consolidee finale - nouvelle ToolRoute::Batch ; catalogue d'outils 70 -> 72 ; invariants CONTRACTS + ~16 tests
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.
Résumé
Deux nouvelles primitives MCP pour remplir un modal / une page de choix scrollable sans l'aller-retour par option (aujourd'hui ~70 appels pour ~14 champs). Implémente le LLD
docs/design/LLD-batch-choice-enumeration-selection.md.enumerate_choiceshit_targets(include_latent=true)), groupes avec sémantique single-select / multi-select, requis/optionnel, id + coords par choix.scroll_scan=truefait un balayage restituant la position (coordonné commescan_chart, non gated).apply_selections(plan, expected_epoch)BatchApprovalContextborné, réutilise la grant map/TTL existante).expected_epochau dispatch (refus de plan périmé) + re-checkfingerprinten vol → re-scan uniquement sur reflow (disclosure progressive), capsMAX_RESCANS/MAX_BATCH_PICKS.HitTarget.id(fallback label/group/bbox) ; étapes non résolues rapportées, jamais devinées ; vérif consolidée finale.Détails
ToolRoute::Batchpourapply_selections; catalogue d'outils 70 → 72.hit_targets/ui_epoch.fingerprint/expected_epoch/ l'approve gating existants.Validation locale
cargo build✅ ·cargo clippy --workspace --all-targets -- -D warnings✅ ·cargo test✅ (175+ tests).