| 310 | } |
| 311 | |
| 312 | function fallbackReason(selected, dimensions) { |
| 313 | if (selected === '/fleet --quick') return 'the request signals independent parallel work.'; |
| 314 | if (selected === '/archon') return 'the request appears persistent or campaign-sized.'; |
| 315 | if (selected === 'direct-edit') return 'the request appears small enough for a direct edit.'; |
| 316 | return 'the request needs sequencing but not campaign persistence yet.'; |
| 317 | } |
| 318 | |
| 319 | function applyProportionality(input, selected, dimensions) { |
| 320 | if (selected.startsWith('/fleet') && dimensions.scope === 'single-file') { |
| 321 | return { |
| 322 | selected: '/marshal', |
| 323 | reason: 'proportionality downgraded Fleet because the request mentions a single file.', |
| 324 | }; |
| 325 | } |
| 326 | if ((selected === '/archon' || selected.startsWith('/fleet')) && words(input).length < 20) { |
| 327 | return { |
| 328 | selected: '/marshal', |
| 329 | reason: 'proportionality downgraded campaign-level routing because the input is brief.', |