ci/woodpecker/pr/ci Pipeline was successful
When Nest resolves a @Body() metatype to Object (import-type erasure #436, or decorator-metadata loss in a broken dependency graph — the #1391/#1389 mixed-install class), the global ValidationPipe's whitelist rejects every property of every payload: the first symptom is a 400 on the first bootstrap attempt of a fresh install, indistinguishable from a bad payload. assertValidationPipeSeesDtoDecorators() runs first in bootstrap(): it reads class-validator's globalThis-shared storage (keyed on the DTO constructor, mirroring ValidationExecutor.js:50's object.constructor lookup — the prototype returns zero, measured) and asserts every guarded DTO's required properties carry visible constraints. Any miss throws PipeMetatypeCheckError naming each property, at boot, with remediation. Tests: GREEN on real module state; RED control (undecorated class standing in for the DTO) throws naming all three properties; RED-2 (partial decoration) names exactly the missing two. Typecheck delta vs pristine tree: zero errors from these files. Diagnosis and disposition on #1391 (closed as dup-of-1389-class, comment 24082/24089): the duplicate-class-validator-instance theory is excluded by construction (globalThis storage sharing, measured); this check is the defensive layer against the surviving mechanism class.