26f8a1002e
- FalAudioAdapter.BuildBody: floor (not Math.Round) the clamped duration so
it never exceeds the requested value, then enforce >= 1 (banker's rounding
could round 2.5 -> 2 and could exceed the request).
- AssetGenJobManager.AllowedExtensionsFor: fail closed — an unexpected/unknown
job kind now allows nothing instead of falling through to the model
allowlist, so the RCE boundary never opens by default. Explicit cases for
model + marketplace.
- Tests: pin floor semantics (10.9 -> 10) and the fail-closed behavior
(unknown/null/empty kind -> not allowed).
Verified: EditMode 1167 tests / 0 failures + in-editor smoke (BuildBody(10.9)
-> duration=10; IsAllowed("bogus","glb")=false).
Claude-Session: https://claude.ai/code/session_015KYy51gwBuhDuLZXXoqc98