From 0efd5644f64f3c1400de52e598a8dd3e87260fe5 Mon Sep 17 00:00:00 2001 From: wtclaude Date: Fri, 25 Sep 2026 18:23:29 -0500 Subject: [PATCH] fix(rust): a bad title mode reaches the form as a sentence The router's own isIn check answered a mode it did not know with express-validator's "Invalid value" before titles.validateSettings could say which words are allowed. Found on the walk; the router now checks shape only, as every other phase-17 route does. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY --- server/router/admin/rust.router.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/router/admin/rust.router.js b/server/router/admin/rust.router.js index f925ea0..e489978 100644 --- a/server/router/admin/rust.router.js +++ b/server/router/admin/rust.router.js @@ -159,8 +159,10 @@ adminRustRouter.put( /* #swagger.responses[404] = { description: 'No such server' } */ requireRole('admin'), param('id').isString().isLength({ min: 1, max: 64 }), - body('mode').optional().isIn(['first', 'all', 'upto']), - body('rules').isArray({ max: 10 }).withMessage('rules is a list of at most ten'), + // Shape only. The words, the bounds and the per-rule sentences are + // `titles.validateSettings`'s, in the controller, so a bad mode reaches the + // form as a sentence rather than as "Invalid value". + body('rules').isArray().withMessage('rules is a list'), validate, admin.putTitles, )