fix(mcp): range-check NDC arguments on the wire value before narrowing to f32
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- rust
- Área
- api, backend-api-design
Línea de trabajo
Read src/mcp/features/selection.rs, src/viewport/rect_pick.rs, and .project-docs/mcp.md, then check the linked pull request #427 for work already underway. First settle whether the range contract applies to the f64 wire value or the f32 value; done means documenting that decision and adding consistent tool descriptions and tests for every affected argument.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
Raised by a CodeRabbit review of #404 and checked against the code. MCP tools that take normalised screen coordinates deserialise them as [f32; 2] (for example select_in_rect, src/mcp/features/selection.rs). serde rounds a value such as 1.00000001 to 1.0 before the range check (NdcRect::new in src/viewport/rect_pick.rs), so a value that is 1e-8 out of range is accepted as the boundary instead of returning invalid_params. The accepted rectangle is the same as the boundary, so the effect is negligible, but the contract says out-of-range values are refused.
This is the f32 convention across the MCP surface, so fixing it for one tool alone would be inconsistent.
Change
- Decide whether the range contract is on the f64 wire value or the f32 value, and document it in
.project-docs/mcp.md. - If the wire value: parse these fields as f64, check the range, then narrow, in one shared helper used by every tool with NDC or screen-fraction arguments; add a test with 1.00000001 for each.
- If the f32 value: state that in the tool descriptions and the docs, and pin it with a test so it is a decision and not an accident.
Related: #404, #390.
- Lenguaje dominante
- Rust
- Estrellas
- 4
- Forks
- 2
- Merge medio
- 1 d 1 h
- PR fusionados (30 d)
- 225
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cristim/AztecCraft
-
fix(operations): the NoSelection message says 'before framing' for Delete and pivot resetPosiblemente ocupada @calmasacow la tomó hoy. Abiertoarea/ui-parity effort/xs impact/few priority/p3 severity/low triaged type/bug urgency/eventually
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
cristim/AztecCraft#431 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
area/ui-parity effort/s impact/few priority/p3 severity/low triaged type/bug urgency/eventually
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
cristim/AztecCraft#430 ·
Los mantenedores suelen responder en 1 día
-
refactor(mcp): make the Keys error-code match exhaustive instead of a scene_error wildcardPosiblemente ocupada @cristim la tomó hace 1 día. Abiertoarea/mcp effort/xs impact/few priority/p3 severity/low triaged type/chore urgency/eventually
Dificultad 3/5 Medio día Aptitud para principiantes 25/100
cristim/AztecCraft#420 ·
Los mantenedores suelen responder en 1 día
-
fix(viewport): use a vertex-relative signed area in polygon_overlaps_rectPosiblemente ocupada @cristim la tomó hace 1 día. Abiertoarea/selection effort/xs impact/few priority/p3 severity/low triaged type/bug urgency/eventually
Dificultad 3/5 Medio día Aptitud para principiantes 22/100
cristim/AztecCraft#418 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
fix(viewport): report a native resource limit during view build as resource_limitPosiblemente ocupada @cristim la tomó hace 1 día. Abiertoarea/viewport effort/xs impact/few priority/p3 severity/low triaged type/bug urgency/eventually
Dificultad 2/5 1-3 horas Aptitud para principiantes 30/100
cristim/AztecCraft#415 ·
Los mantenedores suelen responder en 1 día
Todos los issues de cristim/AztecCraft
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
ci javascript tests
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
jonathanong/no-mistakes#3258 ·
Los mantenedores suelen responder en 1 día
-
Add to bmi docsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
eWaterCycle/bmi-rust#2 ·
-
area: cpu-engines area: fuzzer good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 91/100
hffgzktbcc-blip/ounce-core#402 ·
Los mantenedores suelen responder en 1 día
-
compiler
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
HerringtonDarkholme/hd-lang#1699 ·
Los mantenedores suelen responder en 1 día